DataSourceRealm 是 Tomcat Realm 接口的一种实现,它通过一个 JNDI 命名的 JDBC 数据源在关系型数据库中查找用户。只要数据库结构符合下列要求,你可以通过大量的配置来灵活地修改现有的表与列名。
为了设置 Tomcat 从而使用 DataSourceRealm,需要执行以下步骤:
下面这个 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)
);
在下面的范例中,有一个名为 authority 的 MySQL 数据库,它包含上述创建的表,通过名为 “java:/comp/env/jdbc/authority” 的 JNDI 命名的 JDBC 数据源来访问。
<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 时必须遵守下列规则:
应用负责管理users(用户表)和user roles(用户角色表)中的信息。Tomcat 没有提供任何内置功能来维护这两种表。