我在route.php中访问Auth :: user()时遇到问题。到目前为止,我所拥有的是:
Route::group(['middleware' => 'auth'], function () {
if(Auth::user()->role == "manager"){
Route::get('/','ManagerController@index');
}
else if(Auth::user()->role == "rater"){
Route::get('/','RaterController@index');
}
});
它给了我这个错误"试图获得非对象的属性"每当我尝试使用Auth :: user() - >角色
时答案 0 :(得分:4)
将您的代码更改为:
Route::group(['middleware' => 'auth'], function () {
if (Auth::check()) {
if(Auth::user()->role == "manager"){
Route::get('/','ManagerController@index');
}
else if(Auth::user()->role == "rater"){
Route::get('/','RaterController@index');
}
}
});
因为如果当前用户尚未登录,则他将不会role
,因此Auth::user()
将返回null
,因此无法访问role
属性。您需要首先检查用户是否使用if (Auth::check())
登录。
P.S。检查路由文件中的身份验证是一种不好的做法,应该在controller
内处理。希望这会有所帮助。