Laravel 自带的Auth验证登录方法


Posted in PHP onSeptember 30, 2019

在laravel有自带的登录验证。只要建立对应的表和配置一些文件就能够使用,无需开发者自己去实现登录逻辑。

第一步:配置方面

在config下的auth.php配置guards 和 providers 。 之后新建文件和数据库名称要和这里的对应。

'guards' => [
  'web' => [
   'driver' => 'session',
   'provider' => 'users',
  ],

  'api' => [
   'driver' => 'token',
   'provider' => 'users',
  ],
  //Laravel Auth 验证登录
  'admin' => [
   'driver' => 'session',
   'provider' => 'admins',
  ]

 ],
'providers' => [
  'users' => [
   'driver' => 'eloquent',
   'model' => App\User::class,
  ],

  'admins' => [
   'driver' => 'eloquent',
   'model' => App\Admin::class,
  ],

  // 'users' => [
  //  'driver' => 'database',
  //  'table' => 'users',
  // ],
 ],

第二步:数据库方面

1 新建admins表,作为后台用户表

Laravel 自带的Auth验证登录方法

其中remember_token 用于是否记住用户

2 在app目录下新建Admin.php 文件对应,文件名称取决于配置文件中的名称

<?php
namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;

class Admin extends Authenticatable
{

 protected $fillable = [
  'username', 'password',
 ];

 protected $hidden = [ 
  //remember_token 字段用于记住我的功能
  'password', 'remember_token',
 ];

 public static $rules = [
  'username'=>'required',
  'password'=>'required'
 ];
}

Laravel 自带的Auth验证登录方法

第三步:控制器中auth的使用

Auth::guard('admin')->attempt($credentials)); 尝试登录
Auth::guard($guard)->guest();判断用户是否来宾,可用于中间件,判断用户是否登录,返回false,则已经登录,反之,跳转会登录页面
Auth::guard($guard)->user();获取已经登录的用户信息,注意在__construct()中无法获取,可以在中间件里面获取
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class AdminAuthMiddleware
{
 /**
  * Handle an incoming request.
  *
  * @param \Illuminate\Http\Request $request
  * @param \Closure $next
  * @return mixed
  */
 public function handle($request, Closure $next, $guard = null)
 {
  //如果没有指定的话,默认 guard 是 web,
  //dump(Auth::guard($guard)->check()); 判断用户是否认证
  //Auth::guard($guard)->user() 获取用户信息
  //Auth::guard($guard)->guest() 是否是来宾
 if(Auth::guard($guard)->guest()){
 if($request->ajax() || $request->wantsJson()){
 return response('Unauthorized.', 401);
 }else{
 return redirect()->guest('admin/login');
 }
 }

  return $next($request);
 }
}
$credentials = $request->only('username', 'password');

   /**
    * 使用laravel自带的Auth登录
    * 1、密码使用的是hash加密 $crypt = password_hash($password, PASSWORD_DEFAULT);
    */
   if(Auth::guard('admin')->attempt($credentials)){
    return response()->json(['code' => 200, 'msg' => '登录成功']);
   }else{
    return response()->json(['code' => 403, 'msg' => '用户名或密码错误']);
   }

以上这篇Laravel 自带的Auth验证登录方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
求PHP数组最大值,最小值的代码
Oct 31 PHP
PHP中操作ini配置文件的方法
Apr 25 PHP
基于php实现长连接的方法与注意事项的问题
May 10 PHP
深入密码加salt原理的分析
Jun 06 PHP
深入PHP中的HashTable结构详解
Jun 13 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
PHP整合PayPal支付
Jun 11 PHP
php使用array_search函数实现数组查找的方法
Jun 12 PHP
PHP7+Nginx的配置与安装教程详解
May 10 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
laravel 使用auth编写登录的方法
Sep 30 #PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
Sep 30 #PHP
php面试实现反射注入的详细方法
Sep 30 #PHP
laravel5表单唯一验证的实例代码
Sep 30 #PHP
Laravel模糊查询区分大小写的实例
Sep 29 #PHP
基于laravel Request的所有方法详解
Sep 29 #PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 #PHP
You might like
用PHP来写记数器(详细介绍)
2006/10/09 PHP
处理单名多值表单的详解
2013/06/08 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
php防止伪造的数据从URL提交方法
2014/06/27 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
Python 探针的实现原理
2016/04/23 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
Otticanet澳大利亚:最顶尖的世界名牌眼镜, 能得到打折季的价格
2018/08/23 全球购物
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
几个SQL的面试题
2014/03/08 面试题
《歌唱二小放牛郎》教学反思
2014/04/19 职场文书
快递员岗位职责
2014/09/12 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
会计电算化实训报告
2014/11/04 职场文书
2014年保险业务员工作总结
2014/12/23 职场文书
车间统计员岗位职责
2015/04/14 职场文书
员工聘用合同范本
2015/09/21 职场文书
Nginx反向代理配置的全过程记录
2021/06/22 Servers
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js