2015-02-09 171 views
1

嗨我正在嘗試爲我的子域設置不同的身份驗證,例如,如果用戶是訪客並通過子域訪問域,我想將它們重定向到子域登錄,並且如果用戶正在從主域網頁訪問,我想將它們重定向到主域登錄頁面。 主域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')); 
     } 
    } 
}); 

但這似乎他們重定向回「子域登錄」,即使在日誌中是正確的。

回答

0

所以我發現最好的解決方案是爲子域創建另一個auth過濾器。

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

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