业务需求:修改密码,要求输入原密码和新密码进行修改密码。
原密码因为使用SpringSecurity中的PasswordEncoder的encode方法进行hash加密了,但我们表单传到后端的是没加密的密码。比如密码是123456,加密后是$10$qRyhbnCnQUkLPiX4J1GdwuaFOrLbWqSfw1mzE7/d7PxgX9Pc83rOq
这时,从数据库获取的是加密后的密码,要与前端传送过来的未加密密码进行比对。需要使用PasswordEncoder的matches方法,返回值为boolean类型。
// 参数inputPwd:未加密密码如:123456
// 参数dbPwd:从数据库获取的加密的密码如:$10$qRyhbnCnQUkLPiX4J1GdwuaFOrLbWqSfw1mzE7/d7PxgX9Pc83rOq
boolean isMatches = passwordEncoder.matches(inputPwd,dbPwd);
匹配成功,则可以对传进来的新密码进行加密进行替换。
当完成修改密码之后,通常都会需要你重新登录。
如果页面中使用了iframe子页面,在这个子页面修改的密码。
我们想要通过父页面进行跳转,怎么办?
// 使用该方法,url是注销的url
parent.location.replace("http://localhost:8083/logout");