当前位置:首页 > 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.   protected $table = 'user'
  13.  
  14.   protected $primarykey = 'id'
  15.  
  16.   public $timestamps = false; 
  17.  
  18.   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']; 
  19.  
  20.   /** 
  21.    * Get the unique identifier for the user. 
  22.    * 
  23.    * @return mixed 
  24.    */ 
  25.   public function getAuthIdentifier(){ 
  26.     return $this->getKey(); 
  27.   } 
  28.  
  29.   /** 
  30.    * Get the password for the user. 
  31.    * 
  32.    * @return string 
  33.    */ 
  34.   public function getAuthPassword(){ 
  35.     return $this->password; 
  36.   } 
  37.  
  38.   /** 
  39.    * Get the token value for the "remember me" session. 
  40.    * 
  41.    * @return string 
  42.    */ 
  43.   public function getRememberToken() 
  44.   { 
  45.     return $this->{$this->getRememberTokenName()}; 
  46.   } 
  47.  
  48.   /** 
  49.    * Set the token value for the "remember me" session. 
  50.    * 
  51.    * @param string $value 
  52.    * @return void 
  53.    */ 
  54.   public function setRememberToken($value
  55.   { 
  56.     $this->{$this->getRememberTokenName()} = $value
  57.   } 
  58.  
  59.   /** 
  60.    * Get the column name for the "remember me" token. 
  61.    * 
  62.    * @return string 
  63.    */ 
  64.   public function getRememberTokenName() 
  65.   { 
  66.     return 'remember_token'
  67.   } 

然后需要在配置文件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

分享到: