就我可能造成此行为的原因感到困惑的程度而言,这是一个非常简单和基本的问题。在我的MEANJS应用程序中,用户正在使用Passport登录。用户模型有一个简单的身份验证方法,该方法将输入的密码与用户的密码进行哈希匹配后再进行匹配。这个应用程式已经在生产中,没有任何问题。我一直面临着一个完全不同的问题,即无法更新用户,因为保存失败,因为需要输入密码字段,如果输入密码字段,则会导致密码被重新哈希。重要的是,我至少没有对authenticate方法感到困惑,它是标准的MEANJS authenticate函数。
UserSchema.methods.authenticate = function(password) {
console.log('password being authenticated is ' + password);
console.log('Hash password is : ' + this.hashPassword(password));
console.log('User\'s existing pwd is : ' + this.password);
var ePwd = this.hashPassword(password);
var uPwd = this.password;
if(ePwd === uPwd){
console.log('TRUE'); //THIS IS NOT DISPLAYED
}
return this.password === this.hashPassword(password);
};
即使我的密码完全相同,也不会返回true。为了进行检查,并且由于我正在记录值,因此我将其复制粘贴到Chrome ScratchJS窗口中,只是为了进行验证,并在其中正确显示:
var p1 = 'nkzm3dT0tjxOZ'; //hashPassword(password)
var p2 = 'nkzm3dT0tjxOZ'; //this.password
if(p1 === p2){console.log('TRUE');} //WORKS
为什么这会发生?在这里重试这些值时,我所做的任何更改都不会造成干扰。我确信这可能是无限愚蠢的,但这确实使我无所适从。我非常感谢您提供的任何帮助,包括附带的内容。
控制台输出
password being authenticated is mypassword
Hash password is : nkzm3dT0tjxOZSRfsoNckNomgVouYvaw7WYEpqL4G6ovFTSDeosnxfHecNUhsvDWwcXIBzopsvLx1HZiX+
User's existing pwd is : nkzm3dT0tjxOZSRfsoNckNomgVouYvaw7WYEpqL4G6ovFTSDeosnxfHecNUhsvDWwcXIBzopsvLx1HZiX+
我必须指出,直到几小时前,它一直可以正常工作。
TYPEOF结果
typeof ePwd string
typeof uPwd string
最佳答案
修剪epwd
和upwd
中的前导/尾随空格。
关于javascript - 两个相同的字符串未显示为相等的Javascript Meanjs,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31518391/