3

我知道这 <security-role><role-name>Admin</role-name></security-role> 是用于容器映射它与 tomcat-users.xml (领域)

但是如果我不使用领域但我使用数据库,我会感到困惑

谢谢你的每一个建议

4

1 回答 1

6

只需使用数据库领域并<Realm>在服务器配置文件的元素中配置表名和列名。对于 Tomcat,这在Realm HOWTO中有描述。以下是JDBCRealm 章节中相关性的摘录:

快速开始

要设置 Tomcat 以使用 JDBCRealm,您需要执行以下步骤:

  1. 如果您尚未这样做,请在数据库中创建符合上述要求的表和列。
  2. 配置供 Tomcat 使用的数据库用户名和密码,至少对上述表具有只读访问权限。(Tomcat 永远不会尝试写入这些表。)
  3. 将您将使用的 JDBC 驱动程序的副本放在 $CATALINA_HOME/lib目录中。请注意,仅识别 JAR 文件!
  4. 在您的文件中设置一个<Realm>元素,如下所述 。$CATALINA_BASE/conf/server.xml
  5. 如果 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&amp;password=dbpass"
       userTable="users" userNameCol="user_name" userCredCol="user_pass"   
   userRoleTable="user_roles" roleNameCol="role_name"/>

很清楚,不是吗?如果您已经在 Tomcat 中配置了 JDBC 数据源(用于连接池等),那么您也可以改用DataSourceRealm

tomcat-users.xml您正在谈论的是所谓的UserDatabaseRealm

于 2011-03-14T03:11:24.537 回答