所以我必須有一個登錄表面,登錄後我必須決定哪個管理表面可供用戶使用。Laravel管理員使用過濾器之前和之後的訪問級別登錄?
所以我設置路由的是,纔可以進入管理頁面,他們需要登錄,他們在他們將被重定向到相應的管理頁面登錄後:
Route::get('admin', array('before' => 'auth', 'after' => 'access_lvl'));
Route::get('admin1', array('before' => 'auth', 'as'=>"admin1", 'uses' => '[email protected]'));
Route::get('admin2', array('before' => 'auth', 'as'=>"admin2", 'uses' => '[email protected]'));
Route::get('admin3', array('before' => 'auth', 'as'=>"admin3", 'uses' => '[email protected]'));
這裏是access_lvl
過濾:
Route::filter('access_lvl',function(){
$access_lvl=Auth::user()->access_lvl;
var_dump($access_lvl);
switch($access_lvl){
case 1: return Redirect::to('admin1/'); break;
case 2: return Redirect::to('admin2/'); break;
case 3: return Redirect::to('admin3/'); break;
default: return Redirect::to('admin3/'); break;
};
});
不幸的是,我得到一個試圖在Chrome中得到Auth::user()->access_lvl;
非對象錯誤的財產,沒有錯誤只是一個INT(1)在Firefox響應。你能幫我解決這個問題嗎?我在哪裏犯錯誤?這是之前,邏輯正確之後?或者我應該在其他地方添加after過濾器?
另外我正在使用Laravel3我認爲。我剛剛得到了這個項目,我必須繼續。
你可能沒有登錄在Chrome所以'驗證::用戶()'不會返回一個對象。在Firefox中,您已登錄,但'var_dump($ access_level)'向瀏覽器發送響應,從而防止重定向工作,因爲數據發送後無法發送標頭。 –
@Swinburne,但你認爲邏輯正確嗎? – godzsa
我想這不會工作,如果當我從Firefox註銷它不會登錄回來,我會得到相同的錯誤,因爲在鉻 – godzsa