更改当前用户的密码时应该验证什么?

时间:2015-09-11 10:07:13

标签: java spring spring-security

我正在使用spring-mvc项目,该项目使用spring-security进行身份验证。我还使用加密来编码密码并存储在数据库中。

现在我尝试使用更改密码功能。通常我们有old passwordnew password

所以我有一些问题。

  1. 用户只能在登录后更改密码。那么是否有必要再次验证old password

  2. 如果我们必须验证我们如何才能在old password进行编码后在春季进行?

  3. 我使用BCryptPasswordEncoder对密码进行编码。

2 个答案:

答案 0 :(得分:5)

matches的{​​{1}}方法对此非常有用:

BCryptPasswordEncoder

答案 1 :(得分:2)

首先,你必须再次检查旧传递,因为会话可能会被打开而另一个用户可能会恶意更改密码,从而导致管理员和用户都遇到麻烦。

其次,你没有描述旧的传递(*见注释),你记录用户的旧传递输入并将其与数据库进行比较。它只是再次执行登录。相同的登录过程/方法将为您完成工作。

注意正如Diego所指出的那样:确切地说:您存储的密码应该是不可解密的。否则,任何持有加密内容的人都可以解密它们,就像你一样。