您使用的是HTTP
BASIC身份验证,而不是使用的HTTP
身份
FORM验证
j_security_check。该
BASIC认证是通过完成
Authorization从浏览器端请求报头,这是会话独立的。
要强制进行
BASIC身份验证的“注销” ,服务器基本上需要返回401响应。
FacesContext facesContext = FacesContext.getCurrentInstance();ExternalContext externalContext = facesContext.getExternalContext();externalContext.invalidateSession();externalContext.responseSendError(401, "You are logged out.");facesContext.responseComplete();
这将提出一个HTTP 401错误页面,这是自定义为
<error-page>在
web.xml。
您也可以返回带有元刷新的HTML页面,以便最终用户按照元刷新标题内容中指定的方向重定向到所需的目标页面。
FacesContext facesContext = FacesContext.getCurrentInstance();ExternalContext externalContext = facesContext.getExternalContext();externalContext.invalidateSession();externalContext.setResponseStatus(401);externalContext.getResponseOutputWriter().write("<html><head><meta http-equiv='refresh' content='0;add_international_job.faces'></head></html>");facesContext.responseComplete();这似乎确实是很低级的,但是
BASIC身份验证也很低级。使用
FORM身份验证时,这不是必需的。仅使会话无效并发送正常重定向即可进行
FORM身份验证。



