DataSourceRealm 是 Tomcat Realm 接口的一種實現(xiàn),它通過一個 JNDI 命名的 JDBC 數(shù)據(jù)源在關系型數(shù)據(jù)庫中查找用戶。只要數(shù)據(jù)庫結構符合下列要求,你可以通過大量的配置來靈活地修改現(xiàn)有的表與列名。
為了設置 Tomcat 從而使用 DataSourceRealm,需要執(zhí)行以下步驟:
下面這個 SQL 腳本范例創(chuàng)建了我們所需的表(根據(jù)你所用的數(shù)據(jù)庫,可以相應修改其中的語法)。
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)
);
在下面的范例中,有一個名為 authority 的 MySQL 數(shù)據(jù)庫,它包含上述創(chuàng)建的表,通過名為 “java:/comp/env/jdbc/authority” 的 JNDI 命名的 JDBC 數(shù)據(jù)源來訪問。
<Realm className="org.apache.catalina.realm.DataSourceRealm"
dataSourceName="jdbc/authority"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name"/>
使用 DataSourceRealm 時必須遵守下列規(guī)則:
應用負責管理users(用戶表)和user roles(用戶角色表)中的信息。Tomcat 沒有提供任何內(nèi)置功能來維護這兩種表。