简体   繁体   English

Bcrypt 比较总是返回 false

[英]Bcrypt compare always returning false

Im trying to do password verification using bcryptjs,我正在尝试使用 bcryptjs 进行密码验证,

   const bcrypt = require('bcryptjs');
   login(post){
        this.uid = post.uid;
        this.pin = post.pin;
        this.getUser(this.uid);
        if(this.checkUser != undefined && this.pin != undefined){
          console.log(this.checkUser)
          console.log(this.pin)
          console.log(this.checkUser["pin"])
          bcrypt.compare(this.checkUser["pin"], this.pin, (err, res) => {
            if (err){
              console.log("Something went wrong  " +  err)
              // handle error, Wrong password
            }
            else if (res) {
              // Send JWT, Correct password
              console.log("It worked!  " +  res)
              // TEMP
              sessionStorage.setItem("name", this.checkUser["name"]);
              sessionStorage.setItem('loggedin',"true");
              location.reload();
              //
            } 
            else {
              console.log("Something else went wrong!")
            }
          });
         }
       }
    
      
      getUser(uid){
        this.BrukerService.getSingle(uid).subscribe((res: String) => {
          this.checkUser = JSON.parse(res);
        },
        (err) => {
          this.error = err;
        });
      }

this.checkUser: this.checkUser:

{id: "1", uid: "1234", pin: "$2a$05$7251G35/U5YfLby9oQrqpOA58szCqWEo4lOSLxRmn0HV1nZ4Tn962", created: "2020-12-21 14:28:00", name: "Martin"}

this.pin:这个.pin:

1234

this.checkUser["pin"]: this.checkUser["pin"]:

$2a$05$7251G35/U5YfLby9oQrqpOA58szCqWEo4lOSLxRmn0HV1nZ4Tn962

the checkUser is retrieved from a database, this.pin is the correct pass for the user. checkUser 是从数据库中检索的,this.pin 是用户的正确通行证。 bcrypt.compare goes to the else no matter what, so it always logs "something else went wrong", and i don't understand what could be wrong, it correctly outputs the hash and pin, even when i insert them directly as strings into the bcrypt.compare function it goes to the else, res is always false and err null. bcrypt.compare 无论如何都会去 else ,所以它总是记录“其他地方出了问题”,我不明白可能出了什么问题,它正确输出 hash 和 pin,即使我将它们作为字符串直接插入bcrypt.compare function 它转到 else,res 始终为 false 并且错误 null。

Going by what the bcryptjs documentation https://www.npmjs.com/package/bcryptjs says:按照 bcryptjs 文档https://www.npmjs.com/package/bcryptjs所说的:

bcrypt.compare("not_bacon", hash, function(err, res) {
    // res === false
});

You have the hash (this.checkUser["pin"]) parameter first when it should be the second parameter.当它应该是第二个参数时,你首先有 hash (this.checkUser["pin"]) 参数。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM