Spring MVC BCryptPasswordEncoder问题

时间:2018-05-24 13:32:21

标签: java spring spring-mvc encryption

我的项目中有这种情况,我真的不知道如何解决。此应用程序是在Spring MVC上创建的,作为管理员,我可以创建/更新用户。现在我使用BCryptPasswordEncoder来加密存储在MySql DB中的创建用户的密码。

现在问题是由于我们无法真正解码用BCryptPasswordEncoder加密的加密密码。对于前者现在我创建了一个密码为“SpringMVC @#”的用户,点击保存后,它被编码器加密,就像“$ 2a $ 10 $ Cjcstw1UKZstCA19NiF4mOGMHMEMFojNozW5fH7qZ5RJ7Atz24IzG”这是 一个60字符长的盐渍值。现在我无法解密这个值,并且在密码字段中显示为***************(相当于 SpringMVC @#)更新导致重大问题的用户屏幕。

在创建用户时,我输入以下字段:用户名,密码,角色,有效指标(这是值为Y或N的下拉列表)

enter image description here

现在问题是当我进入更新屏幕更新用户详细信息时,密码值从数据库中获取并显示如下:

enter image description here

此处显示的密码实际上是加密/加盐的密码,长度为60个字符,从DB中提取。现在的问题是当我更新一个字段(比如角色)并点击提交时,它还会使用双重加密更新密码(已经加密),即该值再次被加密和更新。并且我无法知道更新后数据库中存储的值。因此,当该用户再次尝试登录该应用程序时,它无法说明其凭据错误。

以下是 SecurityConfig.java 文件的代码,该文件扩展了 WebSecurityConfigurerAdapter

glBufferData(GL_ARRAY_BUFFER, faceGeometry.vertexCount*4*sizeof(GLfloat), faceGeometry.vertices, GL_DYNAMIC_DRAW);

以下是UserController.java的代码片段:

 @Autowired
  DBAuthenticationService DBAauthenticationService;

 @Autowired
  public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
     auth.userDetailsService(dbAauthenticationService).passwordEncoder(passwordEncoder());

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

现在,我的疑问是:

1)无论如何我可以解码加密的DB密码吗?

2)还有另一种方法可以解决这个问题吗?

0 个答案:

没有答案