我正在尝试使用mykong网站上的一个示例来获取Spring安全性……
http://www.mkyong.com/spring-security/spring-security-form-login-using-database/
我使用一个简单的MySQL表让它工作,但现在我尝试使用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;未分类的SQLException for SQL select employeenumber作为用户名,employeepassword作为来自epos.employee的密码,其中employeenumber喜欢?ibmjcc10897无效参数3:参数索引超出范围;嵌套异常为com.ibm.db2.jcc.b.SqlException: ibmjcc10897无效参数3:参数索引超出范围。
感谢所有人
发布于 2013-11-27 17:44:26
谢谢你的帮助。我的问题是,我没有在查询中包含enabled列,这显然会导致参数3:参数index超出范围。
无论如何,我决定给自己更多的控制权,扩展JdbcDaoImpl类并编写我自己的setAuthoritiesByUsernameQuery()。我还没有对它进行测试,但我对这种方法更满意,因为它允许开发人员通过执行查询的代码进行调试,而且我仍然可以将md5作为加密注入。这是两全其美的。希望我能让它工作起来!
https://stackoverflow.com/questions/20212595
复制相似问题