Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
DatasourceALM在Netbeans中不与Tomcat 8.5.24、Spring和Maven一起工作_Spring_Maven_Tomcat_Authentication_Netbeans - Fatal编程技术网

DatasourceALM在Netbeans中不与Tomcat 8.5.24、Spring和Maven一起工作

DatasourceALM在Netbeans中不与Tomcat 8.5.24、Spring和Maven一起工作,spring,maven,tomcat,authentication,netbeans,Spring,Maven,Tomcat,Authentication,Netbeans,我已经有一段时间试图找到这个错误的解决方案,但我找不到任何解决方案 我正在使用Netbeans中的Maven创建一个web应用程序,我想介绍一个非常简单的用户注册/登录。因此,我使用Derby创建了如下数据库: CREATE TABLE Users ( usuario VARCHAR(50) NOT NULL PRIMARY KEY, clave VARCHAR(50) NOT NULL ); CREATE TABLE Roles ( usuari

我已经有一段时间试图找到这个错误的解决方案,但我找不到任何解决方案

我正在使用Netbeans中的Maven创建一个web应用程序,我想介绍一个非常简单的用户注册/登录。因此,我使用Derby创建了如下数据库:

CREATE TABLE Users (
    usuario     VARCHAR(50) NOT NULL PRIMARY KEY,
    clave       VARCHAR(50) NOT NULL 
);

CREATE TABLE Roles (
    usuario     VARCHAR(50) NOT NULL,
    rol         VARCHAR(50) NOT NULL
);
然后我在我的context.xml

<Context antiResourceLocking="true" path="/GestionScout">
  <Realm className="org.apache.catalina.realm.DataSourceRealm" 
         dataSourceName="jdbc/GestionScout" 
         localDataSource="true" 
         roleNameCol="rol" 
         userCredCol="clave" 
         userNameCol="usuario" 
         userRoleTable="roles" 
         userTable="users"/>

  <Resource auth="Container" 
            driverClassName="org.apache.derby.jdbc.ClientDriver" 
            maxActive="8" 
            name="jdbc/GestionScout" 
            password="dani" 
            type="javax.sql.DataSource" 
            url="jdbc:derby://localhost:1527/scout" 
            username="dani"/>

</Context>

最后,我在web.xml中定义了安全约束,因此当您想要访问配置文件时,如果您没有登录,则会加载登录表单并询问您的登录信息。问题是,即使webapp可以访问derby数据库(我已经证明了这一点),在引入正确的登录信息后,它会重定向到/inicio/admin/j_security_check,并且什么也不做,就像我引入了错误的信息一样

我读到Tomcat8+可能有问题,所以我不得不在这个领域中编写一些CredentialHandler,但它也不起作用。互联网上的每个教程都说我必须把这个领域放在一些server.xml文件中,但我没有,因为我使用的是Spring


目前有什么帮助吗(

正如您现在可能已经意识到的,如果您使用的是Spring安全性,则不需要配置DataSourceALM(容器管理的安全性)

对于那些在升级到Tomcat 8.5后正在寻找身份验证中断解决方案的人来说

我对使用Tomcat容器管理安全性(DataSourceRealm)的旧版应用程序有问题。从Tomcat 8.5开始,您必须指定CredentialHandler。我们使用SHA-1(相当旧)来加密存储在数据库中的密码。这意味着将digest=SHA替换为


在中,FWIW是在../webapp/META-INF/context.xml中定义的,而不是在/conf/server.xml中定义的。只有此应用程序使用容器管理的身份验证

基本上,可以通过添加如下嵌套的

<Realm className="org.apache.catalina.realm.DataSourceRealm"...>
 <CredentialHandler 
        className="org.apache.catalina.realm.MessageDigestCredentialHandler" 
        algorithm="MD5" />
</Realm>

考虑使用saltedhash和更多迭代来提高安全性

此处提供更多信息(链接断开时请不要抱怨):