2

我对 Laravel 很陌生,我正在尝试制作一个系统来检查用户是否“登录”。

由于某些原因,我正在使用SSPI Authentication。所以基本上,当用户到达网站时,会出现一个登录弹出窗口,要求输入登录名和密码,并且 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东西。还是我以错误的方式思考问题?

谢谢你的帮助。

4

1 回答 1

4

一个快速的解决方法是将块移动到Route::get('/auth' ...);块上方Route::all(...);

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

于 2014-04-15T09:38:36.640 回答