假設我正在運行一個多租戶應用程序,該應用程序通過子域爲每個組織提供自己的門戶。瀏覽器會話是否對每個子域唯一?
示例 -
orgA.application.com
orgB.application.com
- 等...
每個子從我PSQL分貝不同的模式/租戶讀取,但在其他方面相同的應用程序。
在我ApplicationController
我設置current_user
爲 -
def current_user
if session[:user_id]
@current_user ||= User.find_by_id(session[:user_id])
end
end
很少有管理員/超級用戶如自己,對每個子域的用戶帳戶。如果我與我的用戶(id = 22
)登錄到orgA
,那麼我的session
被設置爲user_id: 22
。
現在說我想切換到orgB
,其中我的用戶名是44
。如果我在orgA
中設置會話後登錄到orgB
,是否有機會偶然以orgB
上的22
作爲用戶登錄?
更重要的是,我試圖瞭解瀏覽器Cookie會話是如何設置的。根據我的理解,它是在客戶端瀏覽器中加密並緩存的變量的哈希。這是每個子域的設置嗎?或者,特定站點的所有子域共享相同的緩存/會話Cookie?
更重要的是,如何防止以上例子中的會話交叉授粉?我的current_user
方法是否太基礎?
謝謝!
聽起來像我在明確留下它與默認值。完美清晰的解釋 - 謝謝! – user2490003