gpt4 book ai didi

javascript - 如何在保存到数据库之前散列密码以与 Passport 模块(本地 Passport )兼容

转载 作者:数据小太阳 更新时间:2023-10-29 04:01:51 29 4
gpt4 key购买 nike

我正在使用 Passport 本地策略进行身份验证。在我的快速服务器中,我收到一个注册帖子请求,我应该为新用户将密码保存到数据库。但是我需要在保存到数据库之前对密码进行哈希处理。

但我不确定如何对其进行哈希处理,因为 Passport 将通过对登录密码凭据进行哈希处理以匹配我从 db 中得到的哈希密码来对用户进行身份验证。我应该如何散列我的密码?

我正在使用这个 module .

最佳答案

passport-local 不会散列您的密码 - 它 passes the credentials to your verify callback进行验证,您负责处理凭据。因此,您可以使用任何哈希算法,但我相信 bcrypt是最受欢迎的。

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

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);
}
});
}));

关于javascript - 如何在保存到数据库之前散列密码以与 Passport 模块(本地 Passport )兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37668680/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com