我想知道如何创建一个可以在所有用户请求中使用的用户会话对象。用户可以在登录后选择配置文件,因此我需要使用此配置文件数据更新该会话对象。
它是如何完成的?如何初始化会话范围的 bean?以后如何更改该 SessionScoped bean 中的对象(有必要记住他的会话中的一些用户操作)。
如果你能在这件事上帮助我,我会很高兴:)
@SessionScoped @Named
public class UserSession implements Serializable {
private ExtendedUserPrincipal extendedUserPrincipal;
@PostConstruct
private void instantiateSession() {
extendedUserPrincipal = new ExtendedUserPrincipal();
}
public void setUserPrincipal(UserPrincipal userPrincipal) {
extendedUserPrincipal.setUserPrincipal(userPrincipal);
}
public void setUser(User user) {
extendedUserPrincipal.setUser(user);
}
public void setUserSecurityData(UserSecurityData userSecurityData) {
extendedUserPrincipal.setUserSecurityData(userSecurityData);
}
@Produces @AuthenticatedUser
private ExtendedUserPrincipal getPrincipal() {
return extendedUserPrincipal;
}
}
我通过在从 HttpServletRequest 获得的会话上调用 logout() 和 invalidate() 来使会话无效。
我正在像这样注入用户主体。每个用户会话的对象应该是相同的
@Inject
@AuthenticatedUser
private ExtendedUserPrincipal extendedUserPrincipal;