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 が呼び出されると、オブジェクトは正しく設定されません。しかし、サービスを 2 回呼び出すと、新しい LoggedInUser 情報が正しく設定されます。

すべての @Stateless Bean が新しい LoggedInUser 情報を取得するにはどうすればよいですか?

4

0 に答える 0