使用 Laravel5.5 的 attempt不能保持登陆状态

在使用 Laravel 5.5 的attempt登陆
 

public function login(Request $request){
   //如果是post提交
   if ($request->isMethod('post')) {
      //登陆验证
      $status = Auth::attempt([
         'username'=>$request->post('username'),
         'password'=>$request->post('password'),
      ],true);
      if($status){
         //echo json_encode(['valid'=>1,'message'=>'登陆成功','url'=>'/admin/index'])
         //跳转到后台首页,但是需要提前设置路由
         return redirect('/admin/index');
      }
      //返回来并且提示错误
      return redirect('/admin/login')->with('error','用户名或者密码错误');
   }
   return view('admin/entry/login');
}

 
中间件的判断是否登陆
 

public function handle($request, Closure $next)
 {
   //如果没有登陆
   if(!Auth::check()){
      return redirect('/admin/login');
  }
     return $next($request);
 }

 
$status状态是真,但是一旦跳转到后台首页“/admin/index”的时候,检测登陆状态是false(在其他地方打印也是false),直接又返回到登陆了。
 
在中间件打印 Auth::check(),发现一直是false,
 
追了一会儿源码(没有看手册直接追源码,过程就略过,直接说答案),发现:
 
原来是因为在创建用户表的时候,把默认的主键id,改成了aid
 

 

 
但是没有在模型指定,模型默认的主键是id,如果有改动,需要声明属性标明主键的名字。
如果没有声明,那就不能保存用户的登陆状态。
 

 
加上主键声明之后,问题就解决了。



版权声明:如果要转载我的文章,请标明出处,谢谢了。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

打赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注