当前位置:首页 > 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.  
  9.  protected $fillable = [ 
  10.   'username', 'password', 
  11.  ]; 
  12.  
  13.  protected $hidden = [  
  14.   //remember_token 字段用于记住我的功能 
  15.   'password', 'remember_token', 
  16.  ]; 
  17.  
  18.  public static $rules = [ 
  19.   'username'=>'required', 
  20.   'password'=>'required' 
  21.  ]; 
  22. } 

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

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

分享到: