J2EE保险应用_web.xml的安全配置

J2EE安全应用___web.xml的安全配置
------------------tomcat .5.5 测试可用----------------阅读声明: 本次案例,使用tomcat的tomcat-users.xml文件
tomcat-users.xml提供了安全领域,这个文件会在tomcat启动时加载进内存,它足够用来
测试安全的配置效果。文件有如下内容:(如果没有,请复制到tomcat的conf文件夹)
<tomcat-users>
   <role rolename="Admin" />
   <role rolename="Guest" />
   <role rolename="Member" />
   <user username="Annie" password="admin" roles="Admin,Member,Guest" />
   <user username="Diane" password="coder" roles="Member,Guest" />
   <user username="Ted" password="newbie" roles="Guest" />
</tomcat-users>

------我们可以看到,上面声明的一些角色role,并定义的几个用户user-----
------不难发现,一个用户可以有多种角色 ---------------------------
然后是web.xml配置以下信息:
	<!-- 配置安全验证方式:1:BASIC-自己弹出对话框 2:FORM-自定义登录界面 -->
	<login-config>
		<!-- <auth-method>BASIC</auth-method>
		<realm-name>Random</realm-name>>-->
			<auth-method>FORM</auth-method>
			<form-login-config>
			<form-login-page>/login.html</form-login-page>
			<form-error-page>/error.html</form-error-page>
			</form-login-config>
	</login-config>
	<!-- 角色:来源tomcat-users.xml的<role>元素 -->
	<security-role>
		<role-name>Admin</role-name>
	</security-role>
	<security-role>
		<role-name>Member</role-name>
	</security-role>
	<security-role>
		<role-name>Guest</role-name>
	</security-role>
	<!--  指定角色特有资源-->
	<security-constraint>
		<web-resource-collection>
			<!--这个名字是必要的,虽然你不会看到它的显示调用 -->
			<web-resource-name></web-resource-name>
			<!-- 指定受约束的资源(可以多个) -->
			<url-pattern>/security/*</url-pattern>
			<!-- GET POST请求是受约束的 可以为:PUT/TRACE/DELETE/HEAD/OPTIONS-->
			<http-method>GET</http-method>
			<http-method>POST</http-method>
		</web-resource-collection>


		<!-- 授权给角色Admin Member,也就是拥有这两个角色其中之一的
			用户,通过GET/POST 可以访问前面指定的授权资源。 -->
		<auth-constraint>
			<role-name>Admin</role-name>
			<role-name>Member</role-name>
		</auth-constraint>
		<user-data-constraint>
			<transport-guarantee>NONE</transport-guarantee>
		</user-data-constraint>
	</security-constraint>


---------从上,你应该可以知道,这段XML保护的是应用上下文下security文件夹的资源
(应用上下文,对应你项目名称) ------------
你可以将我的配置复制:
并在上下文下新建security文件夹,随便建一个html
并,建立对应的 login.htmlerror.html(当然,JSP和随便的命名是允许的,)但是---------------------

注意:login.html有三个固定的元素,以下是我的html(如果你用JSP,请对j_security_check进行编码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <!--看到了没 j_security_check j_username j_password-->
<body> 
    <form action="j_security_check" method="POST">
    	<input type="text" name="j_username">
    	<input type="password" name="j_password">
    	<input type="submit" value="Enter">
    </form>
  </body>
</html>


上面的其中几个元素,有特殊规则如下
特殊规则:
<role-name>:如果存在一个<auth-constraint>元素,却没有任何<role-name>,那么所有的
用户都遭到拒绝.就算有其它的<auth-constraint>也如此(注:<auth-constraint>可以配置
多个

<auth-constraint>:如果不存在,容器允许不经认证就能访问这些URL

<security-constraint>:可以多个,也导致它在可以出现同时两个对资源进行限制且请求
方式相同但限制指定角色不同 而这些不同在<auth-constraint>中,有以下四种情况:
1: Guest + Admin = (Guest,Admin)
2: Guest + * = (*) //即所有人
3: <auth-constraint/> + admin = ()//即没有人
4: 没<auth-constraint> + Admin = (*)//所有人