Node.js bcrypt登录在本地主机上工作时在生产环境中不工作
我使用的用户模型如下所示: usermodel使用bcrypt身份验证,在本地主机上运行良好。 在生产中,注册工作正常,用户在注册时可以登录。但是,在登录时会出现错误“用户名或密码错误” 在本地主机中,bcrypt登录正常工作。然而,在digitalocean和digitalocean的制作中,登录总是给出不正确的电子邮件或密码Node.js bcrypt登录在本地主机上工作时在生产环境中不工作,node.js,bcrypt,passport-local,Node.js,Bcrypt,Passport Local,我使用的用户模型如下所示: usermodel使用bcrypt身份验证,在本地主机上运行良好。 在生产中,注册工作正常,用户在注册时可以登录。但是,在登录时会出现错误“用户名或密码错误” 在本地主机中,bcrypt登录正常工作。然而,在digitalocean和digitalocean的制作中,登录总是给出不正确的电子邮件或密码 router.post('/login', function(req, res, next) { console.log(req); passport.au
router.post('/login', function(req, res, next) {
console.log(req);
passport.authenticate('local', function(err, user, info) {
if (err) return next(err)
if (!user) {
//console.log(user);
req.flash("error", "Either Username or Password is wrong");
return res.redirect('/login');
}
req.logIn(user, function(err) {
if (err) return next(err);
{
//console.log(user);
req.flash("success","Successfully logged in as " + user.username);
res.redirect('/coaching');
}
});
})(req, res, next);
});
请提供帮助,说明为什么在生产中特定的逻辑不起作用日志会说什么?日志不会显示任何错误。日志不会显示任何错误。有一个答案是,对于bcrypt,密码字段的长度必须是60,然后是45。我们如何测试密码字段的大小。任何人都可以分享这个问题。以及如何将其设置为60?我发现了同样的情况。我认为这可以归结为创建密码时创建的指纹。在本地使用,效果很好。在生产服务器上时,由于某种原因,passoword的签名最初是不同的。就好像他们有两个秘密或指纹。奇怪,还没解决,但现在看到了
router.post('/login', function(req, res, next) {
console.log(req);
passport.authenticate('local', function(err, user, info) {
if (err) return next(err)
if (!user) {
//console.log(user);
req.flash("error", "Either Username or Password is wrong");
return res.redirect('/login');
}
req.logIn(user, function(err) {
if (err) return next(err);
{
//console.log(user);
req.flash("success","Successfully logged in as " + user.username);
res.redirect('/coaching');
}
});
})(req, res, next);
});