gpt4 book ai didi

node.js - Passport req.logIn 从不调用 serializeUser

转载 作者:行者123 更新时间:2023-12-03 22:33:42 25 4
gpt4 key购买 nike

我正在尝试为我的项目注册并使用 Passport 登录,但我是新的 Passport 并且我有一些问题,我有一个包含(名称,密码,电子邮件)的 Sequelize 数据库,当我发布/users 时,它永远不会转到 serializeUser它永远加载。
这是我的注册请求:

router.post('/', async function(req, res, next) {

console.log(req.body, 'create new user');
const user = await User.create(
{ Name: req.body.Name, Password: req.body.Password, Email: req.body.Email }
);
const userss = await User.findOne({ where: { Email: req.body.Email } });
console.log(user, userss);

console.log('1');
try {
console.log('inserting');
await user.save(function(err) {
console.log(user.dataValues.id);
req.logIn(user.dataValues.id, function(err) { // here is the problem!
console.log('logIn');
console.log('inserted');
return res.redirect('/');
});
console.log('inserted?');
});
} catch (err) {
console.log(err);
return res.render('users/new', { user, error: req.flash('error') });
}
});
这是我的 Passport :
passport.serializeUser(function(user, done) {
console.log(user);
console.log('serialized1');
done(null, user);
console.log('serialized2');
return;
});

passport.deserializeUser(async function(id, done) {
console.log('here0');
const user = await User.findByPk(id);
console.log('here2');
done(null, user);
console.log('here4');
});
这是登录路径:
router.post('/',
passport.authenticate('local', {
successRedirect: '/',
failureRedirect: '/sessions',
failureFlash: true
}),
function(req, res, next) {
console.log('new user connected');
socketio.io.sockets.emit('msg', `New user connected: ${req.user}`);
}
);

最佳答案

看来您的两条路线都指向同一条路径。
我建议更新登录路由路径。

router.post('/login',
passport.authenticate('local', {
successRedirect: '/',
failureRedirect: '/sessions',
failureFlash: true
}),

关于node.js - Passport req.logIn 从不调用 serializeUser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64003880/

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