这是一个极其简单和基本的问题,以至于我对可能导致此行为的原因感到困惑。在我的 MEANJS 应用程序中,用户使用 Passport 登录。 User 模型有一个简单的身份验证方法,它在散列后将输入的密码与用户的密码相匹配。这个应用程序已经在生产中,没有任何问题。我一直面临无法更新用户的完全不同的问题,因为保存失败,因为密码字段是必需的,当给出密码时,会导致重新散列密码。重点是,我一点也没有弄乱 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
到底为什么会这样??由于正在此处重试值,因此我可能所做的任何更改都不会造成干扰。我敢肯定这可能是非常愚蠢的事情,但这真的让我感到困惑。我非常感谢任何帮助,包括砖 block 。
控制台输出
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/