[英]TokenbasedRememberMeServices not working with jdbc-user-service
[英]Spring Securitiy jdbc-user-service not authenticating - bad credentials
Spring Security让我感到满意,我无法绕过身份验证错误。 这是我的配置:
<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>
我正在使用以下方法创建编码密码:
String password = "p4ssword";
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String encodedPassword = passwordEncoder.encode(password);
我已验证数据库中是否存在正确的用户名/密码,并且获取它们的查询已运行。
不知道为什么这行不通,这让我发疯
如果按用户名查询用户工作正常,则首先要检查的是第二个查询。 分配给用户的一个返回角色/权限。 为了使登录尝试成功,用户必须具有至少一个由“按用户名查询”授权机构返回的角色。
要对其进行测试,可以使用如下查询:“从app_user中选择u.emplid,'USER',其中u.emplid =?”。
如果仍然无法正常工作,那么最好的选择是将日志记录级别设置为DEBUG,然后逐步查看Spring到底在做什么。
您在secoand查询中遇到问题,这意味着按用户权限查询应该仅是用户名和角色,而不是电子邮件,姓名等。
`<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>`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.