阅读Servlet规范可以看到容器支持的几种用户验证方式。这里简单试验了一下Form Based Authentication的用户验证方式。
login.htm | |
<form method="post" action="j_security_check"> Username: <input type="text" name="j_username"><br /> <input type="submit" value="Login"> </form> | 其中,j_username,j_password,j_security_check是必需的。
|
在web.xml中完成授权、资源配置
web.xml | |
<security-constraint> <web-resource-collection> <web-resource-name>web Application</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/login.htm</form-login-page> <form-error-page>/login.htm?reason=1</form-error-page> </form-login-config> </login-config> <security-role> <description>The tomcat role</description> <role-name>admin</role-name> </security-role> | security-constraint:定义访问受限制的web资源。
login-config:配置用户自定义的登录界面, 如果不配置会使用服务器提供的登录界面。
security-role:服务器可访问应用的角色 |
对于web应用来说, j_security_check 是一个看起来比较奇怪的action,用户不需要做j_security_check相关的任何定义。它被web服务器解释和使用。
使用form based anthentication时,一个让人困惑的事情是我们好像不能直接访问login.htm. 因为我们直接访问它时,服务器不知道我们想访问什么资源,这样它就一直给我们展示login.htm. 因此需要我们直接访问想要访问的其他web资源即可。
在tomcat中,user定义在 ${Tomcat_home}/conf/tomcat-users.xml文件中。
编写logout时,执行如下语句即可:
request.getSession.invalidate(); |