次のように宣言された AuthenticatorBean があります。
@Named
@SessionScoped
public class AutenticadorBean implements Serializable {
@Inject
private AutenticadorService autenticadorService;
この Bean は、ユーザー資格情報を検証する AutenticadorService 内のメソッドを呼び出し、次のようにセッションでこのユーザーを @Produces します。
@SessionScoped
public class AutenticadorServiceImpl implements AutenticadorService, Serializable {
@EJB
private AnalistaRepository analistaRepository;
private Analista analistaSessao;
@Override
public void inserirSessaoDadosLogin(String login) {
analistaSessao = analistaRepository.buscaPorUserName(login);
}
@Produces
@Named("analistaSessao")
public Analista getAnalistaSessao() {
return analistaSessao;
}
}
アプリケーションに初めてログインすると、セッションでユーザーが生成されますが、問題は、ログアウトした後、別のユーザーで再度ログインして、
@Inject
Analista analistaSessao
他のサービス内では、ログアウトする前に最初のユーザーで属性が読み込まれます。しかし、AutenticadorService.getAnalistaSessao(); で analistaSessao に直接アクセスすると、ログインした2番目のユーザーである正しいユーザーを返します。
ここに私のログアウトコードがあります:
public String logout() throws IOException {
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext ex = facesContext.getExternalContext();
ex.invalidateSession();
return "/home?faces-redirect=true&logout=true";
}
誰かがこの動作の理由を知っていますか??
ありがとう。