2012-10-11 32 views
1

我讀過a REST service should be stateless,但我們試圖在現有的Web應用程序附近實現移動服務,所以我們試圖保持相同的流程並保持一致。如何使用Spring 3 MVC和Weblogic管理REST服務中的會話?

具體來說:

1)登錄

我們檢查用戶名和密碼, 「創建」 的會話,並響應用的sessionid

然後

2)選擇通過sessionid的角色

我們存儲在會話

等角色信息。

這可能不是最好的辦法,但將是我們的情況下,簡單。

這可能嗎?我怎樣才能使用Spring/Weblogic進行會話?

感謝您的任何信息!

回答

0

會話以一種方式超時緩存。你可以使用whirly緩存。 code.google.com/p/whirlycache/創建時可以說明超時和最大數量的項目。

當你得到一個有效的登錄,使10位或更多位的隨機數,確保其內容尚未出現在緩存中(如果有的話再重新創建隨機數...這意味着在當前的緩存是唯一的)。 [在登錄時也可以檢查項目的數量,以確保沒有達到最大發送警報,如果它的附近意味着你有更多的活躍用戶比預期或人們沒有註銷 - 可能需要另一個緩存與密鑰作爲活動用戶ID,所以看看是否相同人還沒有得到一個活動的會話,所以拒絕,如果同一用戶已經有一個會話激活,在註銷時刪除]

現在讓你的會話對象(一個好主意是一個精簡的用戶對象與用戶ID,安全角色等取決於您的業務需求)並將其存儲在緩存中。

現在,當調用其他方法,就應該接受一個會話ID,檢查緩存,如果有一個匹配的會話ID鍵,讓用戶對象並繼續驗證和處理。

+0

最後,我已經解決了這個問題「自動」,但我會將其標記爲答案。謝謝。 :) – Enrichman

+0

我可以知道你遵循的automagic解決方案嗎? – tgkprog

+1

基本上,使用服務的客戶端保持由容器生成的會話(Weblogic在我的情況下),所以不需要做一些奇怪的事情。我已經有了一個很好的Spring會話範圍bean(如你所建議的那樣),它注入了所有的屬性。 「神奇」的東西讓我們說..哈哈 – Enrichman