Tomcat的Form安全认证

最近使用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安全认证需要注意:

     1、若不设置<http-method>则所有的http都会受到限制。
     2、若设置了<http-method>则只有被设置的HTTP方法受到限制,其他方法不受限制。
     3、设置了<url-pattern>的URL,需要经过验证才能登录,没有设置的则可以随便进行访问。
     4、没有设置<auth-constraint>,或设置为<auth-constraint>*</auth-constraint>表示任何的角色都可以访问,<auth-constraint/>则表示没有角色可以访问

二、Tomcat安全认证的登录跳转: 

     1、输入url,进入登录页面:/jsp/login.jsp
     2、当登录成功时跳转到/WebRoot目录下的 index.jsp页面,可以使用: <script> window.location.href='<%=path%>/jsp/target.jsp' </script> 跳转到目标页面。
     3、 登录页面由<form-login-page>设置,登录失败跳转页面使用<form-error-page>设置。
     4、当试图在session没有注销时,再次在登录页面/jsp/login.jsp进行二次登录时,浏览器会报:404 /j_security_check

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();
	}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值