我对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
之类的东西。或者我是以错误的方式思考问题?
感谢您的帮助。
答案 0 :(得分:3)
快速解决方法是将Route::get('/auth' ...);
块移到Route::all(...);
块之上。
这将告诉Laravel覆盖所有路线。