spring security错误的凭据,即使它们是正确的
我使用的是SpringRoo,我的Spring安全设置如下(spring security错误的凭据,即使它们是正确的,spring,spring-mvc,spring-security,spring-roo,sha,Spring,Spring Mvc,Spring Security,Spring Roo,Sha,我使用的是SpringRoo,我的Spring安全设置如下(applicationContext Security.xml): 但是,当我尝试登录时,会出现错误凭据。发生了什么事 我真的无法找到一种方法来调试它,因为它都是在spring security内部发生的,所以我无法了解实际执行的查询,也无法/不知道从何处找出失败的原因。当您尝试作为用户进行身份验证时,请查看调试日志输出(总是个好主意)。很可能它说找不到用户“johnny” 这很可能是因为在同一个身份验证提供程序中既有jdbc用户服务又
applicationContext Security.xml
):
但是,当我尝试登录时,会出现错误凭据。发生了什么事
我真的无法找到一种方法来调试它,因为它都是在spring security内部发生的,所以我无法了解实际执行的查询,也无法/不知道从何处找出失败的原因。当您尝试作为用户进行身份验证时,请查看调试日志输出(总是个好主意)。很可能它说找不到用户“johnny”
这很可能是因为在同一个身份验证提供程序中既有jdbc用户服务
又有用户服务
,这两个服务都不起作用
使用两个独立的身份验证提供程序元素:
<authentication-provider>
<jdbc-user-service ... />
</authentication-provider>
<authentication-provider>
<user-service>
....
</user-service>
</authentication-provider>
....
另外,正如我在你的另一个问题中所说的,除非是针对遗留系统,否则不应将SHA用作密码哈希算法。在经历了更多痛苦之后,我设法解决了它。我再次创建了用户和角色实体表,并重新编写了查询:
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT u.login, u.password, u.enabled from users u where u.login=?"
authorities-by-username-query="SELECT u.login, r.name FROM users u left join user_roles ur on u.id=ur.user join roles r on ur.roles=r.id WHERE u.login=?"
/>
使用两个separteauthentication provide
与我的错误无关。什么日志以及在哪里可以找到它取决于您如何配置日志记录-通常控制台是一个很好的开始。我不知道您对Java日志记录了解多少,但这是一个很好的概述,应该仍然相关,即使它最初是这样编写的我很久以前就知道了。我通常会在标准输出中看到错误,所以控制台会显示错误。但是,当我尝试使用johnny登录时,控制台不会显示任何错误。您需要正确配置日志记录,并确保启用了调试级别日志记录。我还有一个日志,其中包含log4j.appender.FILE.Threshold=DEBUG
,这意味着启用了调试,但我没有得到任何输出当你登录的时候。
<authentication-provider>
<jdbc-user-service ... />
</authentication-provider>
<authentication-provider>
<user-service>
....
</user-service>
</authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT u.login, u.password, u.enabled from users u where u.login=?"
authorities-by-username-query="SELECT u.login, r.name FROM users u left join user_roles ur on u.id=ur.user join roles r on ur.roles=r.id WHERE u.login=?"
/>