0

我有一个 @SessionScoped Bean,它存储有关登录用户的信息:

@SessionScoped
public class LoggedInUser implements Serializable {

private static final long serialVersionUID = 1L;

private String id;

private String firstName;

private String lastName;

private String email;

private Country country;

private List<String> groups;

private Set<Role> roles;
...
}

身份验证过滤器:

public class AuthenticationFilter implements Filter {
    @Inject
    private LoggedInUserTo loggedInUser;

    public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {
    HttpServletRequest httpServletRequest = (HttpServletRequest) request;
    HttpServletResponse httpServletResponse = (HttpServletResponse) response;

    // initial = setting log in user informations
    // afterwards several checks (role, same user)    

    }

这个会话范围的 bean 被注入了几个 @Stateless bean:

    @Inject
    private LoggedInUser loggedInUser;

现在我想注销一个用户:

public void logout() {
    // this.httpServletRequest.getSession(false).invalidate();
    this.loggedInUser = new LoggedInUserTo();
}

之后,下次调用我的 AuthenticationFilter(也有注入的 LoggedInUser)时,loggedInUser 对象为空,我设置了新的用户信息。但是之后,如果调用了包含注入的 LoggedInUser 对象的 @Stateless bean,则该对象设置不正确。但是,如果我两次调用该服务,则新的 LoggedInUser 信息设置正确。

我必须做什么才能让所有@Stateless bean 获取新的 LoggedInUser 信息?

4

0 回答 0