安全域是Tomcat的内置功能,在org.apache.catalina.Realm接口中申明了一组用户名、口令及所有关联角色
内存域 MemoryRealm
JDBC域 JDBCRealm
数据源域 DataSourceRealm
JNDI域 JNDIRealm
在conf/server.xml中配置
在你的应用的<Context......>下面
<Realm className="org.apache.catalina.realm.MemoryRealm" />
从一个XML文件中读取用户信息,默认的就是tomcat-users.xml
tomcat-users.xml中的角色定义
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="guest"/>
<user username="lee" password="lee" roles="guest"/>
<!--对应的用户密码属于的角色-->
<user username="suoxin" password="suoxin" roles="tomcat,role1"/>
</tomcat-users>
在你的应用下的web.xml中加入<security-constraint>元素
<security-constraint>
<display-name>HelloApp Configuration Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<!--
指明该目录吓得所有文件受保护
或者<url-pattern>*.jsp</url-pattern>
-->
<url-pattern>/* </url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- 允许属于guest和admin角色的用户登陆 -->
<role-name>admin</role-name>
<role-name>guest</role-name>
</auth-constraint>
</security-constraint>
在你的应用下的web.xml中加入<login-config>元素
<login-config>
<auth-method>FORM</auth-method>
<!--
这里FORM是基于表单的验证,会跳转到你的login.jsp,如果出错就到myerror.jsp,还有基于对话筐的
是BASIC关键字,但是不安全在网络传输中。摘要验证DIGEST会采用MD5(Message Digest Algorithm)加密传输
-->
<realm-name>HelloApp realm</realm-name>
<form-login-config>
<form-login-page>/mylogin.jsp</form-login-page>
<form-error-page>/myerror.jsp</form-error-page>
</form-login-config>
</login-config>
mylogin.jsp的action和name必须严格规范写
<form name="form1" id="form1" method="post" action="j_security_check">
<input type="text" name="j_username"/>
<input type="text" name="j_password"/>
<input type="submit" name="Submit" value="提交" />
</form>
JDBC和DataSource域待....