在我的组件中,我试图更改密码,并且在表单中,我要求用户输入旧密码,如果该密码与DB中的密码匹配,则允许他/她更改密码。我正在尝试使用异步验证器来验证密码,该验证器会告诉您旧密码是否正确,但在我的情况下,无论输入的密码是对还是错,异步验证器始终为false。下面给出的是我的异步验证器功能
passwordCheck(control : AbstractControl)
{
return this.usrservice.check_password(control.value,this.logged_in_usr_details['password']).map(res=>{
return res['matched']?null:{invalidPassword:true}
})
}
下面是我的服务文件代码
check_password(pass,oldpass)
{
const params= new HttpParams().set('pass',pass).set('old_pass',oldpass);
return this.http.get(environment.api_url+'/users/compare_pass',{params:params});
}
下面是我的后端Nodejs代码
router.get('/compare_pass/',(req,res)=>{
const queryParams = req.query;
const pass=queryParams.pass;
const old_pass=queryParams.old_pass;
bcrypt.compare(pass,old_pass, function(err, response) {
if(response===true)
{
res.send({matched:true});
}
else {
res.send({notmatched:true});
}
})
})