3

我想配置 tomcat / 我的 Web 应用程序以使用 JDBC 领域来实现容器管理的安全性。我在 tomcat 的 server.xml 文件中指定了领域,如下所示:

<Realm className="org.apache.catalina.realm.JDBCRealm" driverName="net.sourceforge.jtds.jdbc.Driver" connectionURL="jdbc:jtds:sqlserver://hostname:1433/intranet;user=sa;password=sa04jT14;instance=instanceName" userTable="users" userNameCol="username" userCredCol="password" userRoleTable="roles" roleNameCol="role" />

我创建了数据库和表。我创建了一个登录页面并将以下代码添加到 web.xml:

<login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
        <form-login-page>/login.xhtml</form-login-page>
        <form-error-page>/login.xhtml</form-error-page>
    </form-login-config>
</login-config>

但是 Tomcat 是如何知道他必须使用哪个领域进行身份验证的呢?我必须向元素添加元素吗?但那应该是什么价值呢?

提前致谢。

4

1 回答 1

5

这样就好了。这取决于<Realm>Tomcat 将找到并用于您的 webapp 的声明的位置。在Tomcat 的 Realm Configuration HOWTO中也明确提到了这一点:

<Realm>元素可以嵌套在以下任一 Container元素中。Realm 元素的位置直接影响该 Realm 的“范围”(即哪些 Web 应用程序将共享相同的身份验证信息):

  • 在一个<Engine>元素内- 这个领域将在所有虚拟主机上的所有 Web 应用程序之间共享,除非它被嵌套在从属 <Host><Context>元素内的领域元素覆盖。

  • <Host>元素内部- 此领域将在此虚拟主机的所有 Web 应用程序之间共享,除非它被嵌套在从属 <Context>元素内的领域元素覆盖。

  • <Context>元素内部- 此领域将仅用于此 Web 应用程序。

<Engine>and<Host>元素通常在/conf/server.xml. 可以根据本文档<Context>介绍性文本底部的列表在任何位置声明该元素。例如,如果您打算在特定于 web 应用程序中定义此领域,您希望将其与您的 web 应用程序一起部署而无需使用服务器配置,那么最好的位置就是.<Context>Webapp/META-INF/context.xml

希望这可以帮助。

于 2010-03-03T21:51:10.800 回答