当前位置:首页 > CMS教程 > 其它CMS > 列表

Laravel 自带的Auth验证登录方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-25 15:58:36 浏览: 评论:0 

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

第一步:配置方面

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

  1. 'guards' => [ 
  2.   'web' => [ 
  3.    'driver' => 'session'
  4.    'provider' => 'users'
  5.   ], 
  6.  
  7.   'api' => [ 
  8.    'driver' => 'token'
  9.    'provider' => 'users'
  10.   ], 
  11.   //Laravel Auth 验证登录 
  12.   'admin' => [ 
  13.    'driver' => 'session'
  14.    'provider' => 'admins'
  15.   ] 
  16.  
  17.  ], 
  18. 'providers' => [ 
  19.   'users' => [ 
  20.    'driver' => 'eloquent'
  21.    'model' => App\User::class
  22.   ], 
  23.  
  24.   'admins' => [ 
  25.    'driver' => 'eloquent'
  26.    'model' => App\Admin::class
  27.   ], 
  28.  
  29.   // 'users' => [ 
  30.   //  'driver' => 'database', 
  31.   //  'table' => 'users', 
  32.   // ], 
  33.  ], 

第二步:数据库方面

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

其中remember_token 用于是否记住用户

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

  1. <?php 
  2. namespace App; 
  3.  
  4. use Illuminate\Foundation\Auth\User as Authenticatable; 
  5.  
  6. class Admin extends Authenticatable 
  7.  
  8.  protected $fillable = [ 
  9.   'username''password'
  10.  ]; 
  11.  
  12.  protected $hidden = [  
  13.   //remember_token 字段用于记住我的功能 
  14.   'password''remember_token'
  15.  ]; 
  16.  
  17.  public static $rules = [ 
  18.   'username'=>'required'
  19.   'password'=>'required' 
  20.  ]; 

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

Auth::guard('admin')->attempt($credentials)); 尝试登录

Auth::guard($guard)->guest();判断用户是否来宾,可用于中间件,判断用户是否登录,返回false,则已经登录,反之,跳转会登录页面

Auth::guard($guard)->user();获取已经登录的用户信息,注意在__construct()中无法获取,可以在中间件里面获取

  1. <?php 
  2.  
  3. namespace App\Http\Middleware; 
  4.  
  5. use Closure; 
  6. use Illuminate\Support\Facades\Auth; 
  7.  
  8. class AdminAuthMiddleware 
  9.  /** 
  10.   * Handle an incoming request. 
  11.   * 
  12.   * @param \Illuminate\Http\Request $request 
  13.   * @param \Closure $next 
  14.   * @return mixed 
  15.   */ 
  16.  public function handle($request, Closure $next$guard = null) 
  17.  { 
  18.   //如果没有指定的话,默认 guard 是 web, 
  19.   //dump(Auth::guard($guard)->check()); 判断用户是否认证 
  20.   //Auth::guard($guard)->user() 获取用户信息 
  21.   //Auth::guard($guard)->guest() 是否是来宾 
  22.  if(Auth::guard($guard)->guest()){ 
  23.  if($request->ajax() || $request->wantsJson()){ 
  24.  return response('Unauthorized.', 401); 
  25.  }else
  26.  return redirect()->guest('admin/login'); 
  27.  } 
  28.  } 
  29.  
  30.   return $next($request); 
  31.  } 
  32.  
  33. $credentials = $request->only('username''password'); 
  34.  
  35.   /** 
  36.    * 使用laravel自带的Auth登录 
  37.    * 1、密码使用的是hash加密 $crypt = password_hash($password, PASSWORD_DEFAULT); 
  38.    */ 
  39.   if(Auth::guard('admin')->attempt($credentials)){ 
  40.    return response()->json(['code' => 200, 'msg' => '登录成功']); 
  41.   }else
  42.    return response()->json(['code' => 403, 'msg' => '用户名或密码错误']); 
  43.   }

Tags: Laravel验证登录 Auth验证登录

分享到: