JSF 2.0を使用して、ログアウト後にユーザーが戻ることを制限したいWebアプリケーションを作成しました。
解決策として、Great BalusCの回答を調べて別の方法を試しましたが、機能していません。
私が試したのは以下の通りです。
<h:commandLink value="logout" action="#{bean.makeMeLogut()}" />
私が持っている豆で
public void makeMeLogut() {
try {
// get response from JSF itself instead of coming from filter.
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("isLoggedIn", "false");
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
HttpServletResponse hsr = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
hsr.setHeader("Pragma", "no-cache"); // HTTP 1.0.
hsr.setDateHeader("Expires", 0); // Proxies.
FacesContext.getCurrentInstance().getExternalContext().redirect("index.xhtml");
} catch (IOException ex) {
System.out.println("can't logut...");
}
}
BalusCの回答に従って、フィルターを作成する必要がありますが、JSF応答を使用して、それにヘッダーを設定することを考えました。しかし、それは機能していません。
私がどこで間違っているのか考えていますか?