Laravel验证主域名和子域名以及子域名重定向
问题描述:
嗨我正在尝试为我的子域设置不同的身份验证,例如,如果用户是访客并通过子域访问域,我想将它们重定向到子域登录,并且如果用户正在从主域网页访问,我想将它们重定向到主域登录页面。 主域Laravel验证主域名和子域名以及子域名重定向
Route::group(array('before' => 'auth'), function() {
Route::get('/profile', array(
'as' => 'profile-user',
'uses' => '[email protected]'
));
});
网址:example.com/account
所以,如果有人在访问此无需登录,他们将被重定向到登录页面,在默认情况下Laravel做的主域它在过滤但这似乎并不为子域
二级域名
Route::group(['domain' => 'dev.example.com'], function() {
Route::group(array('before' => 'auth'), function() {
Route::group(array('before' => 'my account'), function() {
Route::get('/mysub/account', array(
'as' => 'sub-account',
'uses' => '[email protected]'
));
});
});
});
工作
网址:dev.example.com/mysub/account
因此,如果有人在不登录,他们应该被重定向到dev.example.com这是主页访问上述网址我的子域
的“权威性”过滤器不子域的工作做在config/session.php文件我已经尝试“域” =>“.example.com的”,和‘域’=> '* example.com',,但似乎没有做这项工作,加上它完全停止从主域名登录
因为如果身份验证从子域失败重定向,我想
Route::filter('auth', function()
{
if (Auth::guest())
{
if (Request::ajax())
{
return Response::make('Unauthorized', 401);
}
elseif (Request::getHost() == 'dev.example.com') {
return Redirect::guest(URL::route('subdomain-login'));
}
else
{
return Redirect::guest(URL::route('primary-domain-login'));
}
}
});
但这似乎他们重定向回“子域登录”,即使在日志中是正确的。
答
所以我发现最好的解决方案是为子域创建另一个auth过滤器。
Route::filter('subauth', function()
{
if (Auth::guest())
{
if (Request::ajax())
{
return Response::make('Unauthorized', 401);
}
else
{
return Redirect::guest(URL::route('login'));
}
}
});