我正在使用spring-mvc项目,该项目使用spring-security进行身份验证。我还使用加密来编码密码并存储在数据库中。
现在我尝试使用更改密码功能。通常我们有old password
和new password
。
所以我有一些问题。
用户只能在登录后更改密码。那么是否有必要再次验证old password
?
如果我们必须验证我们如何才能在old password
进行编码后在春季进行?
我使用BCryptPasswordEncoder
对密码进行编码。
答案 0 :(得分:5)
matches
的{{1}}方法对此非常有用:
BCryptPasswordEncoder
答案 1 :(得分:2)
首先,是你必须再次检查旧传递,因为会话可能会被打开而另一个用户可能会恶意更改密码,从而导致管理员和用户都遇到麻烦。
其次,你没有描述旧的传递(*见注释),你记录用户的旧传递输入并将其与数据库进行比较。它只是再次执行登录。相同的登录过程/方法将为您完成工作。
注意正如Diego所指出的那样:确切地说:您存储的密码应该是不可解密的。否则,任何持有加密内容的人都可以解密它们,就像你一样。