在 route.php 中访问 Auth::user()

Syd*_*ria 1 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::get('/','RaterController@index');
    }
});
Run Code Online (Sandbox Code Playgroud)

每当我尝试使用 Auth::user()->role 时,它​​都会给我这个错误“试图获取非对象的属性”

Osa*_*yed 5

将您的代码更改为:

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');
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

因为如果当前用户还没有登录,他将不会有一个rolesoAuth::user()将返回null,因此访问role属性是不可能的。您需要首先检查用户是否使用 登录if (Auth::check())

PS 检查路由文件中的身份验证是一种糟糕的做法,应该在controller. 希望这可以帮助。

  • 当我添加 Auth::check 它返回空 (3认同)