Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBCRealm配置正确,但未成功连接_Java_Tomcat_Authentication_Mariadb_Jdbcrealm - Fatal编程技术网

Java JDBCRealm配置正确,但未成功连接

Java JDBCRealm配置正确,但未成功连接,java,tomcat,authentication,mariadb,jdbcrealm,Java,Tomcat,Authentication,Mariadb,Jdbcrealm,我在网上彻底搜索了一下,没有发现类似的情况,然后发布了这个问题。我正在尝试使用JDBCRealm在开发环境中使用Tomat 7.0.42和MariaDB 5.5部署的简单测试web应用程序中对用户进行身份验证。我已经遵循了在中介绍的所有步骤,以下是我所拥有的: 我的应用&apos;s部署描述符: <error-page> <error-code>403</error-code> <location>/WEB-INF/jsp/desa

我在网上彻底搜索了一下,没有发现类似的情况,然后发布了这个问题。我正在尝试使用JDBCRealm在开发环境中使用Tomat 7.0.42和MariaDB 5.5部署的简单测试web应用程序中对用户进行身份验证。我已经遵循了在中介绍的所有步骤,以下是我所拥有的:

我的应用&apos;s部署描述符:

<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>
<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>

403
/WEB-INF/jsp/desautorizado.jsp
疫苗
/行动/*
帕吉纳斯
/sel_tipo_tabla.jsp
埃斯坦达尔
保密的
埃斯坦达尔
形式
/WEB-INF/jsp/login.jsp
/WEB-INF/jsp/desautorizado.jsp
Tomcat的conf/server.xml:

<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>
<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的,而不是相对于$CATALINA_HOME的。在开发环境中,$CATALINA_基点指向$(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”404961


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

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