【问题标题】:JDBCRealm correctly configured but no successful connectionJDBCRealm 配置正确但连接不成功
【发布时间】:2013-10-27 21:44:16
【问题描述】:

我在互联网上彻底搜索后发布了这个问题,没有找到类似的情况。我正在尝试使用 JDBCRealm 在开发环境中使用 Tomat 7.0.42 和 MariaDB 5.5 部署的简单测试 Web 应用程序中对用户进行身份验证。我已经按照Tomcat's How-To 中解释的所有步骤进行操作,这就是我所拥有的:

我的应用的部署描述符:

<error-page>
    <error-code>403</error-code>
    <location>/WEB-INF/jsp/desautorizado.jsp</location>
</error-page>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Acciones</web-resource-name>
        <url-pattern>/actions/*</url-pattern>           
    </web-resource-collection>

    <web-resource-collection>
        <web-resource-name>Paginas</web-resource-name>
        <url-pattern>/sel_tipo_tabla.jsp</url-pattern>          
    </web-resource-collection>

    <auth-constraint>
        <role-name>estandar</role-name>
    </auth-constraint>

    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

<security-role>
    <role-name>estandar</role-name>
</security-role>    

<login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
        <form-login-page>/WEB-INF/jsp/login.jsp</form-login-page>
        <form-error-page>/WEB-INF/jsp/desautorizado.jsp</form-error-page>
    </form-login-config>        
</login-config>

Tomcat 的 conf/server.xml:

<Engine defaultHost="localhost" name="Catalina">
   <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
      <Context docBase="MyAppStruts" path="/MyAppStruts" reloadable="true" source="org.eclipse.jst.jee.server:MyAppStruts">
         <Realm className="org.apache.catalina.realm.LockOutRealm">
            <Realm className="org.apache.catalina.realm.JDBCRealm"
               driverName="org.mariadb.jdbc.Driver"
               connectionURL="jdbc:mariadb://localhost:3306/desa"
               connectionName="ruben"
               connectionPassword="acceso"
               userTable="usuarios"
               userNameCol="usuario"
               userCredCol="password"
               userRoleTable="roles"
               roleNameCol="rol" />
      </Realm>
    </Context>        
  </Host>
</Engine>

如果我改用 UserDatabaseRealm(Tomcat 的默认使用 conf/tomcat-users.xml 文件),它会完美运行。但是,如果我使用 JDBCRealm,我总是会被重定向到错误页面,即使我在数据库中引入了现有的用户/密码。

我忘了说我是用 Eclipse 来部署的,所以一切都与 $CATALINA_BASE 和 NOT $CATALINA_HOME 相关。在开发环境中,$CATALINA_BASE 指向 $(WORKSPACE_DIR)/.metadata/.plugins/org.eclipse.wst.server.core/tmp0。因此,MariaDB 驱动程序 jar 文件位于 $(WORKSPACE_DIR)/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/lib/mariadb-java-client.jar 中,公钥证书位于 $(WORKSPACE_DIR) )/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/hogar.keystore(这个没问题)。

通过查看日志,我注意到每当我重置服务器(仅重置,甚至在向我的应用程序启动第一个请求之前)时,都会写入以下行:

127.0.0.1 - - [27/Oct/2013:21:29:32 +0100] "GET / HTTP/1.1" 404 961

Eclipse 的控制台选项卡中没有显示错误或异常。我猜想Tomcat无法建立与数据库的连接,但是,为什么?

【问题讨论】:

    标签: java tomcat authentication mariadb jdbcrealm


    【解决方案1】:

    我只是我的用户在数据库中的角色值与我的部署描述符中的 的值不匹配。

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 2015-07-29
      • 2012-08-17
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      • 1970-01-01
      相关资源
      最近更新 更多