我已经使用 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 响应并在其中设置标题。但是它不起作用。
知道我哪里出错了吗?