我正在尝试为我的Web应用程序(JSF 2.1 +hibernate)设置一个容器管理的安全性领域。我注意到Tomcat 7一次只能使用一种类型的领域。
要在netbeans(7.0)中使用Tomcat,我必须创建一个经理脚本角色帐户。除了使用Tomcat Manager,我还需要另一个角色。这对我来说是个大问题,因为我用于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&password=pass" userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles" roleNameCol="role_name" />
tomcat仅使用他在文件中找到的最后一个。他们分开工作得很好
使用CombinedRealm(doc,javadoc):
CombinedRealm
包含一个或多个领域的领域实现。尝试按照每个领域的配置顺序进行身份验证。如果有任何领域对用户进行身份验证,则身份验证成功。合并领域时,用户名在所有合并领域中应该是唯一的。
也许您已经在使用LockOutRealm(doc,javadoc),它是CombinedRealmTomcat 的子类,并且在Tomcat的默认配置中。
LockOutRealm