繁体   English   中英

Spring Securiti JDBC用户服务未通过身份验证-错误的凭证

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM