主域和子域的Laravel身份验证以及子域上的重定向

时间:2015-02-09 12:03:39

标签: php laravel laravel-4

您好我正在尝试为我的子域设置不同的身份验证,例如如果用户是访客并通过子域访问域我想将它们重定向到子域登录,如果用户从主域页访问,我想将它们重定向到主域登录页面。 主域名

Route::group(array('before' => 'auth'), function() {

    Route::get('/profile', array(
        'as' => 'profile-user',
        'uses' => 'ProfileController@user'
     ));

  });

网址:example.com/account

因此,如果有人在没有登录的情况下访问它,它们将被重定向到主域的登录页面,默认情况下Laravel在过滤器中执行此操作但这似乎不适用于子域

SUB DOMAIN

 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' => 'AccountController@subAccount'

        ));
    });
  });
});

网址: dev.example.com/mysub/account

因此,如果有人要在不登录的情况下访问上述网址,则应将其重定向到 dev.example.com ,这是我的子域的主页

" auth"过滤器在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'));
        }
    }
});

但这似乎会将它们重新定向回来" subdomain-login"即使登录正确。

1 个答案:

答案 0 :(得分:0)

所以我发现最好的解决方案是为子域创建另一个auth过滤器。

Route::filter('subauth', function()
{
    if (Auth::guest())
    {
        if (Request::ajax())
        {
            return Response::make('Unauthorized', 401);
        }

        else
        {
            return Redirect::guest(URL::route('login'));
        }
    }
});