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存储在数据库中。