在 属性 文件中设置 - 通过 Spring 引导加密数据源密码

Set In Property File - Bcrypt datasource password over Spring Boot

使用Spring启动2+ 我有一个包含以下内容的 application.properties 文件:

这是我的一部分 application.properties:

spring.datasource.password={bcrypt}xxxxxxx

在没有 bcrypt 的情况下,该应用程序可以完美运行,但使用它时,我的代码 return 在 DB JPA 登录中出错。

我已将此添加到我的安全性中 class:

@Autowired
private DataSource dataSource;

@Autowired
public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {
    auth.jdbcAuthentication().dataSource(dataSource).passwordEncoder(passwordEncoder());
}

@Bean
public BCryptPasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder();
}

但这并没有解决我的问题。 仍然登录数据库失败。

有人能帮忙吗? 提前谢谢大家。

在你的代码中一定有某种密码比较,所以如果你的密码是用bcrypt保存和加密的,你也必须用bycrypt检查它 与

BCryptPasswordEncoder.matches(rawPassword, encryptedPassword);

例如,在我的代码中:

@Service
public class UserServiceImpl implements AuthenticationProvider {

  @Autowired
  private final UserRepository userRepository;
  @Autowired
  private final PasswordEncoder passwordEncoder;

  @Override
  public Authentication authenticate(Authentication authentication) {
    String username = authentication.getName();
    String password = authentication.getCredentials().toString();
    User user = userRepository.find.findByUsername(username);
    //You have to check if user exist or not before compares the password
    if (passwordEncoder.matches(password, user.getPassword())) {
        //Password matches then login
    } else {
        //Password did not match, bad credentials.
    }
  }
}

我使用“spring boot jasypt”api 解决了这个问题。 非常感谢你的助手。 亚尼夫

这是一个教程,可以在您需要时为您提供帮助。 https://www.baeldung.com/spring-boot-jasypt