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


Access Auth::user() in route.php

我在访问路由中的 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内处理。希望这有帮助。