【发布时间】:2014-09-17 06:41:46
【问题描述】:
我有一个带有登录和注销操作的应用程序。按下注销按钮后,我想重定向到登录页面并在此处显示面部消息,其中包含有关成功注销的信息。现在,我正在努力转发面孔消息。此消息不想显示在登录对话框中。你能给我任何提示或推荐另一种方式吗?我正在使用 JSF 2.1 和 Spring Security 4。我尝试过的:
退出方式
public String doLogout() throws ServletException, IOException {
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
HttpServletRequest request = ((HttpServletRequest) externalContext.getRequest());
RequestDispatcher dispatcher = request.getRequestDispatcher("/j_spring_security_logout");
dispatcher.forward((ServletRequest) externalContext.getRequest(), (ServletResponse) externalContext.getResponse());
facesContext.addMessage("", new FacesMessage("You have been successfully logged out."));
externalContext.getFlash().setKeepMessages(true);
FacesContext.getCurrentInstance().responseComplete();
return null;
}
登录 XHTML
<h:form id="loginForm" prependId="false">
<p:dialog visible="true" resizable="false" closable="false" draggable="false" position="center">
<p:messages globalOnly="true" id="msgs"/>
<h:outputLabel for="j_username" value="User" />
<p:inputText id="j_username" required="true"/>
<h:outputLabel for="j_password" value="Password" />
<p:password id="j_password" required="true"/>
<p:commandButton icon="ui-icon-check"
id="login"
action="#{loginController.doLogin}"
oncomplete="handleLoginRequest(xhr, status, args)"
update="msgs"
ajax="false"/>
</p:dialog>
</h:form>
春季安全
<http auto-config="true" >
<intercept-url pattern="/pages/**"
access="ROLE_RA"/>
<form-login login-page="/pages/userLogin.xhtml"
default-target-url="/pages/specimens/specimenOverview.xhtml" />
<logout logout-success-url="/pages/userLogin.xhtml"/>
<session-management invalid-session-url="/pages/userLogin.xhtml">
<concurrency-control max-sessions="1"/>
</session-management>
</http>
【问题讨论】:
标签: redirect jsf-2 spring-security logout