有人可以帮我诊断这个问题吗?
在server.xml中,我有两个领域定义
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" deployIgnore="^welcome.*">
<Realm className="org.apache.catalina.realm.LockOutRealm" failureCount="3" lockOutTime="3600">
<Realm className="org.apache.catalina.realm.JDBCRealm" driverName="org.postgresql.Driver" connectionURL="jdbc:postgresql://localhost:5432/tomcat" connectionName="tomcat" connectionPassword="xxxxx" userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles" roleNameCol="role_name"/>
</Realm>
</Host>
</Engine>
我希望JDBCRealm优先于UserDatabaseRealm。 但是,Web应用程序(直接位于webapps中的目录,没有META-INF / context.xml文件)正在针对UserDatabaseRealm进行身份验证。
该应用程序的WEB-INF / web.xml的相关部分如下所示:
<security-constraint>
<web-resource-collection>
<web-resource-name>public</web-resource-name>
<url-pattern>/public/*</url-pattern>
</web-resource-collection>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>My Realm</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>test_role</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/public/login.xhtml</form-login-page>
<form-error-page>/public/login-failed.xhtml</form-error-page>
</form-login-config>
</login-config>
如果我在该应用程序的META-INF / context.xml
中声明它,JDBCRealm确实适用于特定的应用程序这里有什么不对吗?
答案 0 :(得分:0)
不是真正的答案,但我的tomcat安装现在正如我所期望的那样,关于每个Web应用程序使用哪个领域。
为了它的价值,我唯一不同的就是在eclipse&amp;和本地编辑项目。重新上传战争。以前,我一直在Tomcat服务器上进行原位编辑。然后重新启动服务。
我假设所有Tomcat的配置都是从头开始重新加载的 服务重启,所以我不知道为什么我看到了以前的行为。