Javascript 如何在保存到db之前散列密码以与passport模块兼容(passport local)

Javascript 如何在保存到db之前散列密码以与passport模块兼容(passport local),javascript,node.js,passport.js,Javascript,Node.js,Passport.js,我使用passport的passport本地策略进行身份验证。在我的express服务器中,我收到一个注册post请求,我应该为新用户将密码保存到db。但是我需要在保存到db之前对密码进行哈希运算 但我不知道如何散列它,因为passport将通过散列登录密码凭据来验证用户,以匹配我从db散列的密码。我应该如何散列我的密码 我正在用这个。你试过这个吗 passport local不会散列您的密码-它用于验证,您负责处理凭据。因此,您可以使用任何哈希算法,但我相信它是最流行的 在注册表处理程序中散

我使用passport的passport本地策略进行身份验证。在我的express服务器中,我收到一个注册post请求,我应该为新用户将密码保存到db。但是我需要在保存到db之前对密码进行哈希运算

但我不知道如何散列它,因为passport将通过散列登录密码凭据来验证用户,以匹配我从db散列的密码。我应该如何散列我的密码

我正在用这个。

你试过这个吗


passport local
不会散列您的密码-它用于验证,您负责处理凭据。因此,您可以使用任何哈希算法,但我相信它是最流行的

在注册表处理程序中散列密码:

app.post('/register', function(req, res, next) {
  // Whatever verifications and checks you need to perform here
  bcrypt.genSalt(10, function(err, salt) {
    if (err) return next(err);
    bcrypt.hash(req.body.password, salt, function(err, hash) {
      if (err) return next(err);
      newUser.password = hash; // Or however suits your setup
      // Store the user to the database, then send the response
    });
  });
});
然后在验证回调中,将提供的密码与哈希值进行比较:

passport.use(new LocalStrategy(function(username, password, cb) {
  // Locate user first here
  bcrypt.compare(password, user.password, function(err, res) {
    if (err) return cb(err);
    if (res === false) {
      return cb(null, false);
    } else {
      return cb(null, user);
    }
  });
}));

既然passport已经为我们提供了散列算法,为什么我们要使用它呢?我的意思是,我们只需要将passport local mongoose插入到我们的用户模式中,比如:
UserSchema.plugin(passportLocalMongoose)
,然后,在注册路径中,我们只需告诉
passportLocalMongoose
使用以下命令为我们进行哈希运算:

User.register(new User({username:req.body.username}), req.body.password,function(err,newUser)
{ 
    if(err){
        something
    }else{
        something
    }
)

通过执行上述操作,我们不需要处理散列,它将为我们完成。如果我错了或者你的问题错了,请纠正我。

嘿,伙计,我用我正在使用的模块编辑了我的帖子,你的链接是另一个模块。它可能适用于我的。@FurkanO如果你想对密码进行哈希运算,那么你需要使用我链接的模块。但是我的模块也进行身份验证,它也应该需要一种哈希算法。我想这是一个大家都知道的标准方式,但如果没有人回答,我会用你的。谢谢您的帖子。@FurkanO您可以使用这两个模块--
密码本地身份验证
模块使用以下内容对密码进行哈希:如何使用
passport local mongoose
包(该包使用PBKDF2而不是bcrypt进行哈希)?
User.register(new User({username:req.body.username}), req.body.password,function(err,newUser)
{ 
    if(err){
        something
    }else{
        something
    }
)