我正在使用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