1、web.xml
1) <security-constraint />
<security-constraint> <web-resource-collection> <web-resource-name>Test</web-resource-name> <url-pattern>/index.jsp</url-pattern>----受限资源 </web-resource-collection> <auth-constraint> <role-name>manager</role-name> -----可配置多个角色 </auth-constraint> </security-constraint>
2) <login-config />
BASIC 方式
<login-config> <auth-method>BASIC</auth-method> </login-config>
FORM 方式
<login-config> <auth-method>FORM</auth-method> <realm-name>Example Form-Based Authentication Area</realm-name> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config>
<role-name>manager </role-name> ----------- 对应 tomcat-user.xml
tomcat-users.xml <?xml version='1.0' encoding='utf-8'?> <tomcat-users> <role rolename="manager"/> <user username="" password="" roles="manager"/> </tomcat-users>
2、login.jsp
FORM方式要求 login.jsp中的form的action,以及其中的用户名和密码两个参数的名称,都应取固定的值。登录的后台处理程序为j_security_check;用户名和密码的参数名称分别为:j_username和j_password。
<form method="POST" action='<%= response.encodeURL("j_security_check") %>'> <table border="0" cellspacing="5"> <tr> <th align="right">Username:</th> <td align="left"><input type="text" name="j_username"></td> </tr> <tr> <th align="right">Password:</th> <td align="left"><input type="password" name="j_password"></td> </tr> <tr> <td align="right"><input type="submit" value="Log In"></td> <td align="left"><input type="reset"></td> </tr> </table> </form>
3、error.jsp
给出验证失败的提示信息。
4、测试
jsp文件目录:
WebRoot
---index.jsp
---login.jsp
---error.jsp
启动服务,打开http://xxxx:port/xx/index.jsp
BASIC 方式:
弹出登录窗口,输入错误的name 或者 password,例子用户名和密码都是空。
FORM 方式:
表单验证,如果验证失败,跳转到错误处理页面,给出提示信息。
Note:
如果是 weblogic服务器,web.xml 需要配置<security-role />,同时在 weblogic.xml 中增加<security-role-assignment />配置