2017-01-10 129 views
0

我有兩個分離的子域的兩個應用程序等之間:app1.example.com和app2.example.com,數據庫被彼此之間共享,會話商店數據庫,問題是 如果用戶登錄到第一個應用程序,然後他切換到第二個應用程序,我怎麼能讓他登錄? 我使用sails.js和Redis的存儲會話共享登錄在帆子域

回答

0

最後,在Cookie中添加域兩個應用程序後的作品, 文件的config/session.js

cookie{ 
domain: ".Example.com" 
} 
0

這將是幾乎像縮放 準備您的應用程序的集羣部署

要記住縮放的服務器端應用程序 最重要的事情它應該是無國界的。這意味着您應該是 能夠將相同的代碼部署到n個不同的服務器,期望任何給定的服務器處理傳入請求的任何 ,並且所有 都應該仍然有效。幸運的是,Sails應用程序已經準備就緒,幾乎可以立即使用這種 部署。但在將應用程序 部署到多個服務器之前,需要執行以下幾項操作:

確保您可能在您的應用程序 中使用的其他依賴項依賴於共享內存。確保數據庫(S)爲您的模型(如 MySQL和Postgres的,蒙戈)是可伸縮的(如分片/組),如果你的 應用程序使用會話:配置您的應用程序使用共享會話存儲 如Redis的(簡單地取消註釋在 配置/ session.js適配器選件),並安裝連接,redis的適配器爲您的應用 依賴(如故宮安裝[email protected]~3.0.2 --save --save嚴格)。如果您的應用程序使用套接字:配置您的應用程序使用Redis的作爲共享消息隊列的交付socket.io消息 (取消註釋在配置/ sockets.js適配器選件)安裝 socket.io,Redis的適配器的依賴你應用程序(如故宮安裝 [email protected]~1.0.0 --save --save嚴格)如果羣集是 單個服務器上(例如,使用PM2羣集模式)爲了避免文件 衝突問題,由於到Grunt任務,始終在 生產環境中啓動您的應用程序,和/或考慮完全關閉Grunt。 有關單服務器羣集中Grunt問題的更多詳細信息請參見此處 謹慎使用可保留 數據庫中數據的config/bootstrap.js代碼,以避免引導程序多次運行時發生衝突 (羣集中每個節點一次)

+0

感謝您的回答,但我不是要求擴展,我只是想知道如何在具有相同數據庫的多個應用程序上應用單一登錄,並將會話存儲在redis上,這也是它們之間共享的。 – aatsy

+0

我告訴過你 - 你必須做相同的縮放。使用相同數據庫的兩個不同應用程序幾乎與縮減同一應用程序相同。不同的是,你必須在REDIS中啓用會話存儲,它將工作 –

+0

我已經啓用它,它現在工作後設置父域cookie中的兩個 – aatsy

0

什麼工作對我來說是確保我們擁有所有的Web應用程序相同的密鑰。密鑰可以在config - > session.js中配置。