gpt4 book ai didi

javascript - Passportjs验证失败

转载 作者:行者123 更新时间:2023-12-01 02:35:45 24 4
gpt4 key购买 nike

我第一次尝试使用 Passportjs 对用户进行身份验证,但我一直无法使其正常工作。这是我正在使用的相关代码

Index.js 路由文件

var express = require('express');
var router = express.Router();
var passport = require('passport');
var bcrypt = require('bcryptjs');

router.post('/', passport.authenticate('local', {
successRedirect: 'home',
failureRedirect: '/'
}));

app.js

// Authentication packages
var session = require('express-session');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var MySQLStore = require('express-mysql-session')(session);
var bcrypt = require('bcryptjs');

passport.use(new LocalStrategy(function(email, password, done) {
console.log(email);
console.log(password);

res.locals.connection.query('SELECT id, password FROM users WHERE email = ?', [email], function(err, user) {
console.log(user);

if (err) {return done(err)};

if (user.length === 0) {
done(null, false);
};

const hash = user[0].password.toString();
console.log(hash);

bcrypt.compare(password, hash, function(err, res) {
if (res === true) {
return done(null, {user_id: user[0].id});
} else {
return done(null, false);
}
});
});
}
));

当我输入有效的电子邮件地址和密码时,我没有像我想要的那样被重定向到主页。相反,我被重定向回登录页面。当我使用无效的电子邮件地址时,也会发生同样的情况。即使我在提交登录表单时尝试控制台记录它,我也看不到电子邮件和密码。

有人可以帮我吗?

最佳答案

我注意到您的用户名是email。我遇到了类似的问题,发现解决方案只需将 usernameField 添加到策略选项中即可:

new LocalStrategy({usernameField: '电子邮件'}, function(电子邮件, 密码, 完成){...})

关于javascript - Passportjs验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47940067/

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