最近使用Tomcat的FORM安全認證發現了一些配置的問題,現在總結一下,WEB.XML配置例子如下:
<login-config>
<auth-method> FORM</ auth-method>
<form-login-config>
<form-login-page>/jsp/login.jsp</form-login-page>
<form-error-page>/jsp/error.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>RoleName</role-name>
</security-role>
<security-constraint>
<display-name>RoleName</display-name>
<web-resource-collection>
<web-resource-name> Protected Area</web-resource-name>
<url-pattern>/jsp/*</ url-pattern>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.do</ url-pattern>
<http-method>GET</ http-method>
<http-method>POST</ http-method>
</web-resource-collection>
<auth-constraint>
<role-name> RoleName</ role-name >
</auth-constraint>
</security-constraint>
一、FORM安全認證需要注意:
二、Tomcat安全認證的登錄跳轉:
HTTP Status 404 - /XXX/j_security_check
發生這種情況是因爲我們在重新登錄用戶時,沒有註銷session。所以若不想出現404,我們只需對/j_security_check請求,在後臺做註銷seesion操作即可,以下是我的退出操作,在退出添加javascript的onclick方法:function outLogin(){
$.get('j_security_check');//對j_security_check進行ajax請求,後臺註銷session
window.location.href='./';//跳轉到被過濾頁面,這裏會自動跳轉到登錄頁面
}
後臺的註銷session只需使用: protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
log.warn("註銷session");
req.getSession().invalidate();
}