如何使用tomcat为容器管理的安全性配置JDBC领域?

c0d*_*d3x 3 tomcat web.xml realm

我想配置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" />
Run Code Online (Sandbox Code Playgroud)

我创建了数据库和表.我创建了一个登录页面,并将以下代码添加到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>
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

Bal*_*usC 5

这很好.这取决于<Realm>一个Tomcat将为您的webapp找到和使用的声明的位置.它也在Tomcat的Realm Configuration HOWTO中明确提到:

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

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

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

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

<Engine><Host>元素通常声明/conf/server.xml.该<Context>元素可以在任何的介绍性文字的底部位置按名单的声明本文档.例如,如果您打算在特定于webapp的情况下定义此领域,<Context>而您希望与Web 应用程序一起部署而不必担心服务器配置,那么最好的位置就是Webapp/META-INF/context.xml.

希望这可以帮助.