安全域功能是Tomcat内置功能,在org.apache.catalina.Realm接口中声明了把一组用户名、口令及所关联的角色集成到Tocmat中的方法。 
内存域:MemoryRealm 从XML文件中读取安全验证信息并存入内存中。 JDBC域:JDBCRealm 通过JDBC驱动程序访问存放在数据库中的信息。 数据源域:DataSourceRealm 通过JDBC数据源访问存放在数据库中的信息。 JNDI域:JNDIRealm 通过JNDI provider访问存放在基于LDAP的目录服务器中的安全验证信息。 
设置资源安全约束 
在web.xml中加入<security-constraint>元素 
<security-constraint>  <display-name>MZT</display-name>  <web-resource-collection>    <web-resource-name>protected test</web-resource-name>    <url-pattern>/test/*</url-pattern>    <http-method>POST</http-method>    <http-method>GET</http-method>  </web-resource-collection>  <auth-constraint>   <role-name>mztadmin</role-name>  </auth-constraint> </security-constraint> <login-config>  <auth-method>BASIC</auth-method>  <realm-name>test realm</realm-name> </login-config>
  
设置JDBC域 
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99" driverName="org.gjt.mm.mysql.Driver" connectionURL="jdbc:mysql://localhost/mzt" connectionName="root" connectionPassword="" userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles" roleNameCol="role_name" />
  
<Realm className="org.apache.catalina.realm.DataSourceRealm" debug="99" dataSourceName="jdbc/tomcatusers" userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles" roleNameCol="role_name"/>
  
在MySQL中执行以下SQL语句: 
######### 
#用户表 create table users( user_name varchar(15) not null primary key, user_pass varchar(15) not null ); 
#用户角色表 create table user_roles( user_name varchar(15) not null, role_name varchar(15) not null, primary key(user_name, role_name) ); 
insert into users values('mzt','test'); insert into user_roles values('mzt','mztadmin');
  如果有什么问题,可与我联系: [email protected]
   
 
  |