我在访问路由中的 Auth::user() 时遇到问题.php。到目前为止,这是我得到的:
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()->role 时,它都会给我这个错误"试图获取非对象的属性"
将代码更改为:
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())
登录。
附言:在路由文件中检查身份验证是一种不好的做法,应该在controller
内处理。希望这有帮助。