2013-02-26 46 views
1

我使用的servlet 3.0在Java EE容器(JDBC的境界)提供HttpServletRequest.login()方法,一切工作正常。「記住我」和Servlet 3.0 request.login()

根據這個[Java EE 6:如何實現"保持登錄狀態"當用戶登錄到Web應用程序時,我實現了一個記住我的方法。

但是我還是堅持了在過濾器級以下:

if (user != null) { 
request.login(user.getUsername(), user.getPassword()); 
request.getSession().setAttribute("user", user); // Login. 
addCookie(response, COOKIE_NAME, uuid, COOKIE_AGE); // Extends age. 
}. 

我有一個JDBC的境界與加密PW,我怎樣才能使通過了rememberMe容器管理的認證? user.getPassword()需要明確的(非散列)PW,我不知道!我不想在數據庫中存儲清除密碼。

回答

1

如果你只使用現成的使用登錄模塊接受清(非散列)密碼,那麼你可能需要修改它,然後再安裝修改後的版本。

現有的JDBC-領域最有可能有一個供應商特定的登錄模塊,但是Java EE 6的確實有建築物登錄模塊(AUTH模塊),這就是所謂JASPIC標準化的專用API。對於一些背景信息請參見this article

順便提一下,對於名爲OmniSecurity的OmniFaces子項目,我們一直在構建JASPIC授權模塊,該模塊也支持記住我。它是開源的,所以你可以用它來獲取靈感。