2

我正在尝试为我的 Web 应用程序(JSF 2.1 + hibernate)设置一个容器管理安全领域。我注意到 Tomcat 7 一次只能使用一种类型的领域。

要在 netbeans (7.0) 中使用 Tomcat,我必须创建一个管理员脚本角色的帐户。除了与 Tomcat 经理一起工作外,我还需要另一个角色。这对我来说是一个大问题,因为我用于 JDBCRealm 的表是来自存储用户和角色的实际表的视图,我不想将这两个角色都存储在我的程序使用的同一个数据库中。

有没有办法让 JDBCRealm 和 UserDBRealm 一起工作?那将是一种解脱。

这是来自 server.config 的代码:

<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>

<Realm className="org.apache.catalina.realm.JDBCRealm"
    driverName="org.gjt.mm.mysql.Driver"
    connectionURL="jdbc:mysql://localhost:3306/realm?user=login&amp;password=pass" 
    userTable="users"
    userNameCol="user_name"
    userCredCol="user_pass"
    userRoleTable="user_roles" 
    roleNameCol="role_name" /> 

tomcat 只使用他在文件中找到的最后一个。他们分别工作正常

4

1 回答 1

1

使用CombinedRealmdocjavadoc):

包含一个或多个领域的领域实现。按照配置的顺序对每个领域进行身份验证。如果任何领域对用户进行身份验证,则身份验证成功。组合领域时,用户名在所有组合领域中应该是唯一的。

也许您已经在使用LockOutRealmdocjavadoc),它是 Tomcat 的子类,CombinedRealm它位于 Tomcat 的默认配置中。

于 2011-11-08T21:29:35.527 回答