、...私は...session.invalidateを使用したJSFログアウトで現在のユーザー名がクリアされませんか?私のJSFアプリケーションで
public String getLoggedInUsername() {
return FacesContext.getCurrentInstance().getExternalContext().getRemoteUser();
}
を、現在、このようなユーザーに署名の名前を取得...と、ユーザーがこのようで署名されている場合、私はチェック
public boolean isSignedIn() {
return (getLoggedInUsername() != null);
}
...とユーザがサインアウト、私はこれを行う...
public String doLogout() {
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpSession httpSession = (HttpSession)facesContext.getExternalContext().getSession(false);
httpSession.invalidate();
return "main";
}
私の問題はdoLogout()、getLoggedInUsername(後)で、まだログインしたユーザーの名前を返します。何getRemoteUser()がログアウト後にnullを返すことを確認するはずですか?
代わりに、ユーザー名を確認するだけでなく、isSignedIn()を取得する方法がありますか?
ありがとうございます! Rob
関連するメソッド自体をデバッグしましたか、Webブラウザの動作に基づいて自分で推測しましたか?ページはブラウザのキャッシュから明白に要求されるかもしれません... – BalusC
はい、私はそれをデバッグしました。私はdoLogout()メソッドを打ちました。完了後、getLoggedInUsername()を押してログインしたユーザーのユーザー名を返します(session.invalidateの実行後も)。何か案は? –
リダイレクトを送信しているかどうかわかりません。 :)私はデフォルトの動作が何であれ、doLogOut()でブラウザが何をしていてもmain.jsfページを表示していることを示しています。(これはあなたが見るためにサインインする必要はありません)。それは役に立ちますか? –