Java Spring Securitiy jdbc用户服务未进行身份验证-凭据错误
Spring Security让我感到不适,我无法回避身份验证错误。这是我的配置:Java Spring Securitiy jdbc用户服务未进行身份验证-凭据错误,java,spring,security,spring-jdbc,Java,Spring,Security,Spring Jdbc,Spring Security让我感到不适,我无法回避身份验证错误。这是我的配置: <beans:bean id='bCryptPasswordEncoder' class='org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder'/> <authentication-manager> <authentication-provider> <password-
<beans:bean id='bCryptPasswordEncoder' class='org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder'/>
<authentication-manager>
<authentication-provider>
<password-encoder ref="bCryptPasswordEncoder" />
<jdbc-user-service
data-source-ref="dataSource"
users-by-username-query="select emplid as USERNAME ,password as PASSWORD,'true' AS ENABLED from app_user where emplid=?"
authorities-by-username-query="select u.emplid, p.name from app_user u inner join app_user_app_permissions auap ON auap.app_users = u.id inner join app_permission p on p.id = auap.app_permissions where u.emplid =?" />
</authentication-provider>
</authentication-manager>
我已经验证了数据库中是否有正确的用户/密码,以及获取这些用户/密码的查询是否运行
如果你知道为什么这不起作用,那我就要发疯了。如果users by username查询工作正常,那么首先要检查的就是第二个查询。返回分配给用户的角色/权限的用户。要使登录尝试成功,用户必须至少有一个角色由权限通过用户名查询返回 要测试它,您可以使用如下查询:“从app_USER u中选择u.emplid,'USER',其中u.emplid=?”
如果它仍然不起作用,那么您最好的选择是将日志记录级别设置为DEBUG,并逐步查看Spring到底在做什么。您在Seco中遇到了问题,查询意味着按用户名进行的权限查询,该查询应仅为用户名和角色,而不是电子邮件、姓名等
`<bean id="bcryptEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>
<security:authentication-manager>
<security:authentication-provider>
<security:jdbc-user-service data-source-ref="ds"
users-by-username-query="select user_name,user_password,enabled,user_email from user where user_name=?"
authorities-by-username-query="select user_name,user_role from user_role where user_name=?"
/>
<s
<security:password-encoder hash="bcrypt" ref="bcryptEncoder"/>
</security:authentication-provider>
</security:authentication-manager>`
`
`<bean id="bcryptEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>
<security:authentication-manager>
<security:authentication-provider>
<security:jdbc-user-service data-source-ref="ds"
users-by-username-query="select user_name,user_password,enabled,user_email from user where user_name=?"
authorities-by-username-query="select user_name,user_role from user_role where user_name=?"
/>
<s
<security:password-encoder hash="bcrypt" ref="bcryptEncoder"/>
</security:authentication-provider>
</security:authentication-manager>`