在null

时间:2017-03-05 03:08:39

标签: php laravel authentication

嘿我正在学习laravel v5.2并且正在研究用户身份验证系统并使用用户模式进行检查是否登录用户是管理员还是没有。但是当我尝试获取登录用户时使用 Auth :: user()我得到空白值作为回报。

 use App\User;

 Route::get('/', function () {

   $user = Auth::user();

   // $user = User::find(1);

   if($user->isAdmin()){
      return "Admin";
    }

    return "Normal User";

  });

  Route::get('/access',['middleware'=>'role',function(){
     return "This is middleware";  
  }]);


Route::group(['middleware' => ['web']], function () {

   Route::auth();
   Route::get('/home', 'HomeController@index');

});

1 个答案:

答案 0 :(得分:0)

那是因为web中间件没有在该特定路由上运行。所述中间件是负责设置所有身份验证以及会话创建的中间件,因此您不会在未使用web中间件的路由上获得经过身份验证的用户。

顺便提一下创建回调路线是一种不好的做法,但仅仅是为了这个特殊情况:

 Route::get('/', function () {

   $user = Auth::user();

   // $user = User::find(1);

   if($user->isAdmin()){
      return "Admin";
    }

    return "Normal User";

  })->middleware('web');