我正在使用Java EE表单登录,并且当我第一次登录时,我的url类似于: http://localhost:8080/mysite
并且能够正常登录。登录和注销jsf
,当我在这里注销是代码:
public String logout() {
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
externalContext.invalidateSession();
return "/login.xhtml?faces-redirect=true";
}
,这是在浏览器上显示的内容: http://localhost:8080/mysite/faces/login.xhtml
从这里,如果我尝试再次登录时,我得到HTTP 404与这就是URL的样子: http://localhost:8080/mysite/faces/j_security_check
这里是web.xml中
<login-config>
<auth-method>FORM</auth-method>
<realm-name>mysite</realm-name>
<form-login-config>
<form-login-page>/login.xhtml</form-login-page>
<form-error-page>/login-error.xhtml</form-error-page>
</form-login-config>
</login-config>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
只看模式,有没有办法删除/ faces /部分的url,或者我怎样才能做注销时使用表单身份验证?
您将'Faces Servlet'映射到web.xml中的什么URL模式? – Tiny 2014-10-29 08:57:00
嗨,thnx ...我用url模式映射编辑...此刻,我有点这样做:externalContext.redirect(“/ sisk”);而不是使用动作导航 – Mosd 2014-10-29 09:16:00
XML中的第一个映射是不是无用的(URL模式为'/faces/* url-pattern>'的映射)?此外,您应该能够在单个''标签内像多个''一样组合标签,如 Faces Servlet servlet-name> * .xhtml * .jsf url-pattern> * .faces url-pattern> servlet-mapping>'而不是为每个模式重复它们。 –
Tiny
2014-10-29 09:28:46