Laravel 4 - Route ::除了

时间:2014-04-15 09:31:43

标签: php laravel laravel-4 laravel-routing sspi

我对Laravel很陌生,我试图建立一个系统来检查用户是否已登录"。

出于某些原因,我使用 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路线。但是,在auth路线上,它还会检查变量,找不到它并重定向等等。

有没有办法制作像all routes excepts之类的东西。或者我是以错误的方式思考问题?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

快速解决方法是将Route::get('/auth' ...);块移到Route::all(...);块之上。

这将告诉Laravel覆盖所有路线。