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

解决laravel5中auth用户登录其他页面获取不到登录信息的问题

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-28 10:40:53 浏览: 评论:0 

今天小编就为大家分享一篇解决laravel5中auth用户登录其他页面获取不到登录信息的问题,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧

首先创建user表,里面有:id, name, password,remember_token等字段。

然后再Models添加表模型User.php

  1. <?php 
  2.  
  3. namespace App\Models; 
  4.  
  5. use Illuminate\Database\Eloquent\Model; 
  6.  
  7. use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 
  8. use DB; 
  9.  
  10. class User extends Model implements AuthenticatableContract 
  11. { 
  12.  
  13.   protected $table = 'user'; 
  14.  
  15.   protected $primarykey = 'id'; 
  16.  
  17.   public $timestamps = false; 
  18.  
  19.   protected $fillable = ['user_name', 'password', 'user_phone', 'user_email', 'user_role_id', 'user_avart', 'user_sex', 'user_age', 'user_birthday', 'last_login_ip', 'last_login_time', 'is_disabled', 'remember_token']; 
  20.  
  21.   /** 
  22.    * Get the unique identifier for the user. 
  23.    * 
  24.    * @return mixed 
  25.    */ 
  26.   public function getAuthIdentifier(){ 
  27.     return $this->getKey(); 
  28.   } 
  29.  
  30.   /** 
  31.    * Get the password for the user. 
  32.    * 
  33.    * @return string 
  34.    */ 
  35.   public function getAuthPassword(){ 
  36.     return $this->password; 
  37.   } 
  38.  
  39.   /** 
  40.    * Get the token value for the "remember me" session. 
  41.    * 
  42.    * @return string 
  43.    */ 
  44.   public function getRememberToken() 
  45.   { 
  46.     return $this->{$this->getRememberTokenName()}; 
  47.   } 
  48.  
  49.   /** 
  50.    * Set the token value for the "remember me" session. 
  51.    * 
  52.    * @param string $value 
  53.    * @return void 
  54.    */ 
  55.   public function setRememberToken($value) 
  56.   { 
  57.     $this->{$this->getRememberTokenName()} = $value; 
  58.   } 
  59.  
  60.   /** 
  61.    * Get the column name for the "remember me" token. 
  62.    * 
  63.    * @return string 
  64.    */ 
  65.   public function getRememberTokenName() 
  66.   { 
  67.     return 'remember_token'; 
  68.   } 
  69. } 

然后需要在配置文件config/auth.php中修改如下配置:

'model' => App\Models\User::class,    //指定模型

'table' => 'user',  //指定用户表(user是我数据中储存用户的表)

接着在登录方法里使用Auth::login() 方法登录,如下:

  1. public function store(Request $request) 
  2.   { 
  3.  
  4.     if(emptyempty($request->get('chkCode')) || trim($request->get('chkCode')) != trim(Session::get('admincaptcha'))){ 
  5.  
  6.       $error->add('result','验证码不正确'); 
  7.  
  8.       return back()->withErrors($error); 
  9.     } 
  10.     $adminUser = User::where('user_name',$request->get('user_name'))->where('user_role_id', '>', 0)->first(); 
  11.  
  12.     if(emptyempty($adminUser)){ 
  13.  
  14.       $error->add('result','用户无后台权限'); 
  15.  
  16.       return back()->withErrors($error); 
  17.     }else{ 
  18.  
  19.       if (md5($request->get('user_pwd'))===$adminUser->password&&$adminUser->user_role_id){ 
  20.  
  21.         Auth::login($adminUser); 
  22.  
  23.         Session::put('admincaptcha', ""); 
  24.  
  25.         return redirect()->route('admin.home'); 
  26.  
  27.       }else{ 
  28.  
  29.         $error->add('result','用户名或密码错误'); 
  30.  
  31.         return back()->withErrors($error); 
  32.       } 
  33.     } 
  34.   } 

然而虽然这个页面可以获取到登录信息,然而其他页面却没有,原来是因为id和密码我用的是user_id和user_pwd不是id和password,这两个必须不能变,改了之后可以正常登录。

Tags: laravel5用户登录 auth

分享到: