java - Spring中使用密码编码时用户登录失败

标签 java spring-mvc spring-security password-encryption

我正在使用 Spring StandardPasswordEncoder 在插入数据库之前对密码进行编码。但是当尝试使用相同的密码登录时,我收到无效密码错误。不知道出了什么问题。下面是代码。

安全配置:

<security:authentication-manager id="authMgr">
    <security:authentication-provider>
        <security:jdbc-user-service
            data-source-ref="dataSource" />
        <security:password-encoder ref="passwordEncoder"></security:password-encoder>
    </security:authentication-provider>
</security:authentication-manager>
<bean id="passwordEncoder   class="org.springframework.security.crypto.password.StandardPasswordEncoder">
</bean>

服务层(将数据传递到数据访问层之前进行密码编码)

import org.springframework.security.crypto.password.PasswordEncoder;

@Autowired
private PasswordEncoder passwordEncoder;

user.setPassword(passwordEncoder.encode(newAccountDetails.getPassword()));
userDataAccess.createUser(user);

最佳答案

我相信推荐How to use new PasswordEncoder from Spring Security适用。请参阅此处已接受的答案以获得良好的解释。

我会修改以下答案之一中的建议代码,以更好地适合您当前的设置:

<security:authentication-manager id="authMgr">
    <security:authentication-provider>
        <security:jdbc-user-service data-source-ref="dataSource" />
        <security:password-encoder ref="passwordEncoder"></security:password-encoder>
    </security:authentication-provider>
</security:authentication-manager>

<bean id="passwordEncoder class="org.springframework.security.crypto.password.org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder">
</bean>

关于java - Spring中使用密码编码时用户登录失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33220241/

相关文章:

java - Spring security 在并发环境中得到错误的主体

java - Spring Security 按用户进行身份验证

java - 使用泛型进行二进制搜索并捕获

java - 如何在 Spring Boot 的日志中尽早打印应用程序版本?

java - 集合 - 将元素添加到集合中

java - 修改请求参数的注解

java - Java 1.7 中通过 WatchService 观察目录变化

java - 按列解析 HTML 表格

java.lang.NoClassDefFoundError : org/hibernate/boot/MetadataBuilder 错误

java - 在经过身份验证的用户的 jsp header 中显示用户全名和其他字段