【问题标题】:Bcrypt password encoding doesnt matches the input password in springBoot?bcrypt密码编码与spring Boot中输入的密码不匹配?
【发布时间】:2021-08-29 23:44:00
【问题描述】:

我正在使用 springsecurity bcrypt 密码编码器来编码我的密码,这就是我保存密码的方式

public User saveUser(User newUser) {
        BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
        String encode = bCryptPasswordEncoder.encode(newUser.getPassword());
        newUser.setPassword(encode);
        User user = userRepo.save(newUser);
        return user;

    }

这就是我定义 bean 的方式

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

但是当我尝试将密码与编码密码匹配时,我无法登录。我使用了 passwordencoder.matches 但它没有帮助

  public Response login(String username, String password) throws Exception {
            BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
            Response response = new Response();
            Optional<User> byuser_nameAndPassword = userRepo.getByuser_nameAndPassword(username);
            User user = byuser_nameAndPassword.get();
            String encodedPassword = passwordEncoder.encode(password);
            boolean matches = passwordEncoder.matches(encodedPassword, user.getPassword());
            if (matches){
                response.setStatus(201);
                response.setMessage("Login Succeeded");
            } else {
                response.setStatus(403);
                response.setMessage("You are not Authorized");
            }
    
            return response;
        }
    
    }

感谢任何帮助。

【问题讨论】:

    标签: spring spring-boot spring-mvc spring-security


    【解决方案1】:

    您将不正确格式的参数传递给boolean matches = passwordEncoder.matches(encodedPassword, user.getPassword());

    documentation 说:

    布尔匹配(java.lang.CharSequence rawPassword, java.lang.String encodedPassword)

    第一个参数必须是原始密码,而不是编码密码。

    应该是:

    boolean matches = passwordEncoder.matches(password, user.getPassword())
    

    【讨论】:

      猜你喜欢
      • 2020-01-07
      • 2018-10-09
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 2019-09-05
      • 2019-01-09
      • 2021-07-06
      相关资源
      最近更新 更多