2014-04-15 69 views
1

我是Laravel的新手,我試圖製作一個檢查用戶是否「登錄」的系統。Laravel 4 - 路線::任何除外

由於某些原因,我使用SSPI身份驗證。所以基本上,當用戶到達網站時,會彈出一個登錄窗口,要求輸入登錄名和密碼,SSPI模塊會針對AD進行驗證。

我想要做的是,在任何路線上,它將檢查會話變量。如果此變量不存在,它將重定向到配置了SSPI的路由。

我試過如下:

Route::any('{all}', function() 
{ 
if (!Session::get('PHP_USER_AUTH')) { 
     redirect::route('auth'); 
} else { 
     return 'Logged in as ' . Session::get('PHP_USER_AUTH'); 
} 
})->where('all', '.*'); 

Route::get('/auth', function() { 
    // Do something 
}); 

而這裏的SSPI配置:

<files auth> 
    AuthName "Laravel Auth" 
    AuthType SSPI 
    SSPIAuth On 
    SSPIAuthoritative On 
    require valid-user 
</files> 

與此明顯的問題是,當我在任何航線到達,它將檢查會話變量,不會找到它並重定向到auth路由。但是,在驗證路線上,它也會檢查變量,不會找到它並重定向等等。

是否有某種方法可以製作類似all routes excepts之類的東西。還是我以錯誤的方式思考問題?

感謝您的幫助。

回答

3

一個快速的解決方法是將Route::get('/auth' ...);塊移動到Route::all(...);塊之上。

這將告訴Laravel覆蓋所有路線。

+0

哇,這樣做的工作。謝謝。 –