2010-02-17 80 views
3

我似乎已將自己編碼到一個角落。首先,讓我告訴你我的最終目標是什麼:我有一個GWT應用程序,它可以爲未登錄的用戶提供功能,而其他功能僅適用於已通過身份驗證的用戶。當未經身份驗證的用戶點擊需要身份驗證的內容時,我希望登錄框在模式窗口中彈出,並要求用戶進行身份驗證。 (如果這不清楚去digg.com,並嘗試「沒有登錄」發現一個故事,你會明白我的意思)Java EE用戶認證和GWT

我有代碼添加一個用戶並保存他們的用戶名和密碼(散列與jBCrypt)。我也有一個接受用戶名和密碼的RPC,並且可以驗證密碼是否正確。

我的問題是驗證會話。我可以得到JSESSIONID,但這是我迷失方向的部分。如何將用戶的ID與該會話相關聯,以及如何檢查它仍然有效?

我知道GlassFish都可以管理會話,用戶&角色適合我,但我不知道如何使這項工作順利使用GWT。 GWT和Java EE環境中的用戶是否有任何示例?我一直在Google上搜索幾個小時,而且我什麼都沒有提出。

+0

這似乎是一個相關的問題:http://stackoverflow.com/questions/2270215/gwt-rpc-cookie-authentication它不完全解決通過Glassfish認證的問題,但如果你閱讀上面的問題,你會發現編寫自己的身份驗證方法可能是更好的方法(你會學到更多,並可能導致更安全的網站 - 如果你徹底地做到了:))。 – 2010-02-17 23:35:52

+0

PS:我已經看過一些關於Acegi + GWT的教程,如果你感興趣的話:http://www.insideit.fr/post/2009/02/19/How-to-:-Spring-Security-ex-Acegi -and-GWT和http://code.google.com/p/gwt-ent/wiki/IntegrationGWTWithAcegi – 2010-02-17 23:37:34

回答

2

你的問題有點令人困惑,因爲我的印象是你在同一時間在兩個方向:-)。

如果您想使用Java EE身份驗證,那麼您將需要使用一些純web頁面,您可以在web.xml中進行配置。實際上,使用RequestBuilder可以完成與GWT代碼中的這些頁面的交互(就像我們一樣)。

如果您想了解更多關於通過身份驗證的用戶,請使用HttpServletRequest附帶的Principal對象。 Principal對象具有名稱屬性。

使用Java EE身份驗證非常有限,所以在大多數情況下我們傾向於實現自己的身份。