我知道这
<security-role><role-name>Admin</role-name></security-role>
是用于容器映射它与 tomcat-users.xml (领域)
但是如果我不使用领域但我使用数据库,我会感到困惑
谢谢你的每一个建议
只需使用数据库领域并<Realm>
在服务器配置文件的元素中配置表名和列名。对于 Tomcat,这在Realm HOWTO中有描述。以下是JDBCRealm 章节中相关性的摘录:
快速开始
要设置 Tomcat 以使用 JDBCRealm,您需要执行以下步骤:
- 如果您尚未这样做,请在数据库中创建符合上述要求的表和列。
- 配置供 Tomcat 使用的数据库用户名和密码,至少对上述表具有只读访问权限。(Tomcat 永远不会尝试写入这些表。)
- 将您将使用的 JDBC 驱动程序的副本放在
$CATALINA_HOME/lib
目录中。请注意,仅识别 JAR 文件!- 在您的文件中设置一个
<Realm>
元素,如下所述 。$CATALINA_BASE/conf/server.xml
- 如果 Tomcat 6 已经在运行,请重新启动它。
领域元素属性
要配置 JDBCRealm,您将创建一个
<Realm>
元素并将其嵌套在$CATALINA_BASE/conf/server.xml
文件中,如上所述。JDBCRealm 的属性在 Realm 配置文档中定义。例子
创建所需表的示例 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) );
默认文件
Realm
中包含(注释掉) 示例元素。$CATALINA_BASE/conf/server.xml
下面是一个使用名为“authority”的 MySQL 数据库的示例,该数据库使用上述表进行配置,并使用用户名“dbuser”和密码“dbpass”进行访问:<Realm className="org.apache.catalina.realm.JDBCRealm" driverName="org.gjt.mm.mysql.Driver" connectionURL="jdbc:mysql://localhost/authority?user=dbuser&password=dbpass" userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles" roleNameCol="role_name"/>
很清楚,不是吗?如果您已经在 Tomcat 中配置了 JDBC 数据源(用于连接池等),那么您也可以改用DataSourceRealm。
tomcat-users.xml
您正在谈论的是所谓的UserDatabaseRealm。