Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问route.php中的Auth::user()_Php_Laravel_Laravel 5 - Fatal编程技术网

访问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.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->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不会在路由、任何控制器的构造函数等上工作。。这就是拉威尔的局限性。这就是我离开拉威尔的原因。