访问route.php中的Auth::user()
我在访问route.php中的Auth::user时遇到问题。到目前为止,我得到的是:访问route.php中的Auth::user(),php,laravel,laravel-5,Php,Laravel,Laravel 5,我在访问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::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');
}
}
});
因为如果当前用户尚未登录,他将没有角色,因此Auth::user将返回null,因此无法访问角色属性。您需要首先使用if Auth::check检查用户是否登录
另外,在路由文件中检查身份验证是一种非常糟糕的做法,应该在控制器中处理。希望这有帮助。将代码更改为:
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');
}
}
});
因为如果当前用户尚未登录,他将没有角色,因此Auth::user将返回null,因此无法访问角色属性。您需要首先使用if Auth::check检查用户是否登录
另外,在路由文件中检查身份验证是一种非常糟糕的做法,应该在控制器中处理。希望这会有所帮助。您需要确保Auth::user首先实际返回有效对象,即用户实际经过身份验证。您需要确保Auth::user首先实际返回有效对象,即添加Auth::check时用户实际经过身份验证empty@SydneyLoteria你登录了吗?因为如果你没有登录,它应该返回空!这是坏习惯!!如果不使用routes文件获取访问权限,则必须在controller@Sangar82我知道这是一个非常糟糕的做法,但它应该仍然有效。我的回答只是说明错误发生的原因以及如何阻止它的发生。但正如您所说,检查应该在控制器内部进行。Auth::check不会在路由、任何控制器的构造函数等上工作。。这就是拉威尔的局限性。这就是我离开laravel的原因。当我添加Auth::check时,它返回empty@SydneyLoteria你登录了吗?因为如果你没有登录,它应该返回空!这是坏习惯!!如果不使用routes文件获取访问权限,则必须在controller@Sangar82我知道这是一个非常糟糕的做法,但它应该仍然有效。我的回答只是说明错误发生的原因以及如何阻止它的发生。但正如您所说,检查应该在控制器内部进行。Auth::check不会在路由、任何控制器的构造函数等上工作。。这就是拉威尔的局限性。这就是我离开拉威尔的原因。