You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Spring Security默认用户配置密码编码器实现密码加密?

解决方案

1. 生成BCrypt加密密码

先把原始密码myPassword转换成BCrypt加密后的字符串,可通过简单代码生成:

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

public class PasswordGenerator {
    public static void main(String[] args) {
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
        String hashedPassword = encoder.encode("myPassword");
        System.out.println(hashedPassword);
    }
}

运行后会得到类似$2a$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx格式的加密字符串。

2. 更新application.properties配置

将生成的加密密码加上{bcrypt}前缀,替换原密码配置:

spring.security.user.name=myUser
spring.security.user.password={bcrypt}$2a$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
spring.security.user.roles=admin

3. 确认现有配置有效性

你已经在WebSecurityConfig中定义了PasswordEncoder Bean,Spring Security会自动识别密码中的{bcrypt}前缀,并使用你配置的BCryptPasswordEncoder完成密码验证——不需要额外配置AuthenticationManagerBuilder或数据源,因为你采用的是Spring Security默认的内存用户认证机制,application.properties里的配置会被自动加载。

如果想要显式配置内存用户(替代application.properties的配置),可以在WebSecurityConfig中重写configure(AuthenticationManagerBuilder auth)方法:

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication()
        .passwordEncoder(encoder())
        .withUser("myUser")
        .password("{bcrypt}$2a$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
        .roles("admin");
}

此时可删除application.properties里的用户配置。

4. 测试验证

启动应用后,用用户名myUser和原始密码myPassword通过HTTP Basic认证访问接口,即可正常通过权限校验。

内容的提问来源于stack exchange,提问作者skywalker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 12:30:53