2017-03-05 39 views
1

嘿,我正在學習laravel v5.2和工作在用戶身份驗證系統和使用用戶模式檢查是登錄用戶是管理員或不是。但是當我嘗試通過使用Auth :: user()獲得登錄用戶作爲回報,我得到空白值。調用成員函數isAdmin()null

use App\User; 

Route::get('/', function() { 

    $user = Auth::user(); 

    // $user = User::find(1); 

    if($user->isAdmin()){ 
     return "Admin"; 
    } 

    return "Normal User"; 

    }); 

    Route::get('/access',['middleware'=>'role',function(){ 
    return "This is middleware"; 
    }]); 


Route::group(['middleware' => ['web']], function() { 

    Route::auth(); 
    Route::get('/home', '[email protected]'); 

}); 

回答

0

這是因爲web中間件未在該特定路由上運行。所述中間件是負責設置所有認證以及會話創建的中間件,因此你不會在沒有使用中間件的路由上獲得認證用戶。

這是一個不好的做法的方式來創建回調路線,但只是爲這種特殊情況下的緣故:

Route::get('/', function() { 

    $user = Auth::user(); 

    // $user = User::find(1); 

    if($user->isAdmin()){ 
     return "Admin"; 
    } 

    return "Normal User"; 

    })->middleware('web');