javascript - 两个相同的字符串未显示为相等的 Javascript Meanjs

标签 javascript string meanjs

这是一个极其简单和基本的问题,以至于我对可能导致此行为的原因感到困惑。在我的 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

最佳答案

epwdupwd 中去除前导/尾随空格。

关于javascript - 两个相同的字符串未显示为相等的 Javascript Meanjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31518391/

相关文章:

html - Angularjs如何计算两张表的总和值?

javascript - 如何理解下划线的调用

javascript - 我应该如何在 JavaScript 中设置循环引用

javascript - 使用动态非硬编码路径填充 javascript 对象中的深层键/值

database - 显示与搜索与数据库中的排序字符串

ruby-on-rails - ruby rails : Interpreting a form input as an integer

javascript - Websockify 包装 fork 服务器

c++ - 在 C++ 中查找字符串中的循环的有效算法和代码?

angularjs - 如何在Meanjs中从新的mongodb Collection创建架构并显示记录

javascript - .replace 在 js 中不起作用