3

我正在創建一個Java EE Web服務應用程序。我不知道如何實現登錄:如何在Java EE中實現登錄?

它是由SessionContext存儲UserPrincipal,每一個方法程序調用時使用

時間檢索它的登錄更好的在Java EE Web服務應用程序中實現

如說顧客一個購買產品時,是良好的編程習慣儲存在SessionContext的UserPrincipal和檢索的用戶ID,從它在交易中使用,

,或者

是它更好地傳遞令牌每次進行每次交易並存儲所有登錄的用戶和在表格中發佈的令牌,以便購買完成後,可以使用令牌來檢索用戶ID?

+0

查看JEE API Java認證和授權服務更多信息和示例http://docs.oracle.com/javase/1.5.0/docs/guide/security/jaas/JAASRefGuide.html#Sample – 2012-02-06 03:19:14

回答

4

最常用的方法是登錄一次,驗證與數據庫用戶信息(UNAME,密碼),然後 在會議用戶數據或用戶角色節約(例如,具有會話作用域bean)。

這樣的用戶數據\用戶角色依然存在,可以訪問當你需要它(服務器端或客戶端)

public class UserSession implements Serializable { 

    // login-related fields 
    protected String userName; 
    protected String userPassword; 
    protected Object requestInfo; 


    //session related info 
    private Object sessionInfo ; 
    private boolean loggedIn; 
    /** This method tries to login the user 
    */ 
    private login (userName,password){ 
    loggedIn = callDbAndAuthenticateUser(userName,password) 
    } 

定義一個bean的作用域會話,並更新它的會話

在另一個bean中或直接從jsf頁面檢查getter isLoggedIn以知道用戶是否已登錄。


編輯

你使用EJB \ RMI當你訪問database.Those問題是不一定相同\相關,

可以憑據傳遞到您遠程調用的方法,或您可以在本地服務器上處理授權,並讓您的本地身份驗證機制調用遠程方法。

+0

但我們如何檢查每次用戶是否被認證? – nkvp 2012-02-04 20:00:15

+0

@nkvp與bean中的loggedIn屬性。編輯答案 – 2012-02-04 20:04:20

+0

所以我們應該在Web部件上使用java beans ... ejb部分的認證如何? – nkvp 2012-02-05 02:01:03

2

AFAIK,最好的做法是將USER_ID存儲在數據庫中。