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

时间:2016-07-07 07:59:51

标签: 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');
    }
});

它给了我这个错误"试图获得非对象的属性"每当我尝试使用Auth :: user() - >角色

1 个答案:

答案 0 :(得分:4)

将您的代码更改为:

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())登录。

P.S。检查路由文件中的身份验证是一种不好的做法,应该在controller内处理。希望这会有所帮助。