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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/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
Spring mvc 调试spring安全身份验证管理器_Spring Mvc_Spring Security - Fatal编程技术网

Spring mvc 调试spring安全身份验证管理器

Spring mvc 调试spring安全身份验证管理器,spring-mvc,spring-security,Spring Mvc,Spring Security,我正在尝试使用mykong网站上的一个示例获取Spring security… 我曾经使用一个简单的MySQL表来实现它,但现在我尝试使用db2来实现它,在db2中,密码存储在使用md5加密的数据库中 以下是我如何设置 <authentication-manager> <authentication-provider> <password-encoder hash="md5" /> <jdbc-user-serv

我正在尝试使用mykong网站上的一个示例获取Spring security…

我曾经使用一个简单的MySQL表来实现它,但现在我尝试使用db2来实现它,在db2中,密码存储在使用md5加密的数据库中

以下是我如何设置

<authentication-manager>
    <authentication-provider>
        <password-encoder hash="md5" />
        <jdbc-user-service data-source-ref="dataSource"

            users-by-username-query="
                select employeenumber, employeepassword 
                from employee where employeenumber like ? 
                and employeestatus = 'Active'"

            authorities-by-username-query="
                select employeenumber, securitygroupcode 
                from employee 
                where employeenumber like ? 
                and employeestatus = 'Active'" 
        />
    </authentication-provider>
</authentication-manager>

当我尝试登录到我的应用程序时,我输入了不正确的登录详细信息,它会正确地告诉我

您的登录尝试未成功,请重试。 原因:用户名或密码无效

但当我正确登录时,我会输入正确的登录详细信息

您的登录尝试未成功,请重试。 原因:PreparedStatementCallback;SQL的未分类SQLException[选择employeenumber作为用户名,employeepassword作为来自epos.employee的密码,其中employeenumber like?和sitedirectoryid=10001,employeestatus='Active'];SQL状态[null];错误代码[-99999];[ibm][db2][jcc][10145][10897]无效的参数3:参数索引超出范围。;嵌套异常为com.ibm.db2.jcc.b.SqlException:[ibm][db2][jcc][10145][10897]无效参数3:参数索引超出范围


谢谢大家

谢谢你们的帮助。我的问题是我没有在查询中包含enabled列,这显然会导致参数3:参数索引超出范围


无论如何,我决定给自己多一点控制权,扩展JdbcDaoImpl类,并编写自己的setAuthoritiesByUsernameQuery()。我还没有对它进行测试,但我更喜欢这种方法,因为它允许开发人员通过执行查询的代码进行调试,并且我仍然可以将md5作为我的加密插入。这是两全其美的。希望我能让它工作

它只是一个MD5散列还是生成的散列中有其他内容(例如,盐或其他内容)。另外(如果我没有弄错的话)spring生成的MD5是小写的,所以如果db one是大写的,它就会失败。嗨,我刚刚看了一下我的db中存储了什么,它与我在使用小写时得到的匹配。所以我想这意味着它应该正常工作?我发现了问题所在。这对我来说是个错误。现在发生的是,当我输入正确的细节时,我会得到一个不同的错误。我正在修改我的帖子以反映新的错误请修改你的问题以反映实际的代码,从stacktrace判断你发布的不是实际的SQL。如果我们看不到真实的东西,我们怎么能帮助你?!谢谢你的帮助。我是个白痴。我没有在我的users by username查询中包含enabled列。很傻