【问题标题】:'Incorrect arguments' thrown by bcrypt-nodejs - Passportbcrypt-nodejs 抛出的“不正确的参数” - Passport
【发布时间】:2016-11-05 15:45:33
【问题描述】:

我为我的 Node.js 应用程序设置了一个登录系统。最近我对我的用户模型(CoffeeScript)进行了更改:

password: String

password:
        type: String
        select: false

我用 bcrypt 比较密码哈希的函数如下:

userSchema.methods.validPassword = (password) ->
        bcrypt.compareSync password, @local.password

现在每当我运行上述函数时,都会抛出这个错误

Incorrect arguments

有人知道为什么在我将“select: false”添加到我的用户模型后会抛出这个问题吗?

【问题讨论】:

    标签: javascript node.js express coffeescript passport.js


    【解决方案1】:

    如果密码或@local.password 不是字符串,则会抛出此错误。它只是发生在我身上,因为我试图在加载的属性中不包括 @local.password 的实例上调用实例方法。

    【讨论】:

      【解决方案2】:
      userSchema.methods.validPassword = (password) ->
        bcrypt.compareSync password, @local.password
      

      假设这是在课堂上,您需要 => 而不是 -> 才能使 @local 工作。

      【讨论】:

        【解决方案3】:

        记录保存的密码和传入密码的值。我敢打赌,其中一个是未定义的。

        【讨论】:

          【解决方案4】:

          检查密码的值是否正在填充。设置选择 false 将不会检索密码的值。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-10
            • 2020-09-10
            • 1970-01-01
            • 1970-01-01
            • 2017-10-22
            相关资源
            最近更新 更多