簡體   English   中英

游戲框架中的會話處理

[英]session handling in play framework

我有一個基於Play框架和Scala的Web應用程序。 該應用程序連接到具有許多鍵空間的Cassandra db。 我有不同的用戶,每個用戶都屬於一個不同的單元(可以說每個單元都作為鍵空間)。 假設我有零售和制造商的用戶名,如果我以零售名和用戶名登錄,它會連接到零售密鑰空間,並提供屬於零售密鑰空間的表中的數據;如果我以制造商的用戶名登錄,則它會提供我的數據屬於制造鍵空間的表。

現在的問題是,如果我使用零售從chrome登錄,它會給我零售密鑰空間中的數據,如果我打開firefox並使用制造商登錄,它會連接到制造密鑰空間並檢索該密鑰空間的數據,現在如果我回到chrome,已使用零售用戶名登錄並執行任何操作,它將從制造商密鑰空間而不是零售密鑰空間檢索數據。 該應用程序已切換了鍵空間,它始終以最新的登錄用戶名運行。我該如何克服這個問題。

聽起來您正在使用單例(全局變量)來存儲所有用戶共享的一個和唯一的鍵空間,或者每個用戶至少存儲一個鍵空間。 相反,您想要給每個用戶會話自己的密鑰空間。 每個會話有幾種保存和還原用戶密鑰空間信息的方法:

  • 通過cookie
  • 通過Java Web令牌(JWT)
  • 通過HashMap單例,其中包含每個用戶會話的條目。 您將為此需要一個軟HashMap,因此舊條目會自動清除。 Google Guava具有良好的實現。

Play Framework文檔包含有關此主題的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM