安全域功能是Tomcat內(nèi)置功能,在org.apache.catalina.Realm接口中聲明了把一組用戶名、口令及所關(guān)聯(lián)的角色集成到Tocmat中的方法。
內(nèi)存域:MemoryRealm 從XML文件中讀取安全驗(yàn)證信息并存入內(nèi)存中。
JDBC域:JDBCRealm 通過JDBC驅(qū)動程序訪問存放在數(shù)據(jù)庫中的信息。
數(shù)據(jù)源域:DataSourceRealm 通過JDBC數(shù)據(jù)源訪問存放在數(shù)據(jù)庫中的信息。
JNDI域:JNDIRealm 通過JNDI provider訪問存放在基于LDAP的目錄服務(wù)器中的安全驗(yàn)證信息。
設(shè)置資源安全約束
在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>
設(shè)置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中執(zhí)行以下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');
posted on 2005-08-17 09:57
my java 閱讀(277)
評論(0) 編輯 收藏 所屬分類:
java身份認(rèn)證轉(zhuǎn)帖