2016-07-07 68 views
0

我在訪問我的route.php中的Auth :: user()時遇到問題。到目前爲止,這是我已經有了:在route.php中訪問Auth :: user()

Route::group(['middleware' => 'auth'], function() { 
    if(Auth::user()->role == "manager"){ 
     Route::get('/','[email protected]'); 
    } 
    else if(Auth::user()->role == "rater"){ 
     Route::get('/','[email protected]'); 
    } 
}); 

它給了我這個錯誤「試圖獲得非對象的財產」每當我嘗試使用驗證用戶::() - >角色

+1

你需要確保'Auth :: user()'實際上是首先返回一個有效的對象(即用戶實際上已被認證) – Stuart

回答

2

你的代碼更改爲:

Route::group(['middleware' => 'auth'], function() { 
      if (Auth::check()) { 
       if(Auth::user()->role == "manager"){ 
        Route::get('/','[email protected]'); 
       } 
       else if(Auth::user()->role == "rater"){ 
        Route::get('/','[email protected]'); 
       } 
      } 
     }); 

因爲如果當前用戶沒有登錄,他不會有這麼roleAuth::user()返回null從而訪問role財產是不可能的。您需要先檢查用戶是否使用if (Auth::check())登錄。

P.S.在路由文件中檢查驗證是一種不好的做法,應該在controller內處理。希望這可以幫助。

+1

當我添加Auth ::檢查它返回空 –

+0

@SydneyLoteria你登錄?因爲如果你沒有登錄,它應該返回'空'! –

+0

這是不好的做法!不使用路由文件來獲得訪問權限,你必須在控制器中執行此操作 – Sangar82

相關問題