2016-11-05 116 views
3

我對堆棧溢出相當陌生,所以請在這裏堅持下去。Laravel子域名重定向登錄

我創建具有以下鏈接laravel項目...

main.dev(這是登錄,註冊,並幫助用戶段)

athlete.main.dev(這是運動員在main.dev登錄被重定向到)

coach.main.dev(這是教練要重定向到在main.dev登錄)

這裏的代碼什麼的想法看起來像重定向用戶 switch (User::getGroup()) { case 'Athlete': return Redirect::to(' http://athlete.main.dev '); case 'Coach': return Redirect::to(' http://coach.main.dev '); }

這工作正常,用戶根據其帳戶類型重定向,但到達此子域後,用戶當前被迫再次登錄。

我一直在尋找大約三天試圖找到答案無濟於事。

基於main.dev的登錄信息到達這些重定向時,是否可以自動登錄用戶?或者我怎樣才能跨子域共享會話數據?

感謝您的幫助, -Nick

+0

http://athlete.main.dev該頁面在你的控制 我的意思是說,你可以在這裏編碼嗎? – DsRaj

+0

子域名被視爲不同的域名,因此您的登錄名不會持續存在。檢查這個http://stackoverflow.com/questions/3040514/are-ajax-calls-to-a-sub-domain-considered-cross-site-scripting – Shubhamoy

+0

@DsRaj我有控制的子域和使用中間件,域和命名空間來處理它。 – gofish

回答

1

一種方式是通過發送用戶名和密碼要重定向並進行驗證網址::學嘗試( )在子域中。

switch (User::getGroup()) { 
      case 'Athlete': 
       return Redirect::to('http://athlete.main.dev')->with([ 
       'username' => $username, 
       'password' => $password 
       ]); 
      case 'Coach': 
       return Redirect::to('http://coach.main.dev')->with([ 
       'username' => $username, 
       'password' => $password 
       ]);; 
     } 

在你的控制器處理coach.main.devathlete.main.dev添加該你做任何事情之前

if(isset($username) && isset($password)){ 
    Auth::attempt(['username' => $username, 'password' => $password]); 
} 
2

我想你會需要一個SSO(單點登錄)功能解決你的問題,因爲你需要同時服務於不同的服務器上,它可以應用只有使用SSO才能實現。看看這一點,也許有助於解決您的問題 - 解決問題您

Good single sign-on solution for Laravel