gpt4 book ai didi

javascript - Passport JS "Can' t 在发送后设置标题"

转载 作者:IT老高 更新时间:2023-10-28 23:14:45 25 4
gpt4 key购买 nike

当我使用 Passport JS 成功登录时出现此错误。登录后尝试重定向到主页。

执行此操作的代码:

app.post('/login', 
passport.authenticate('local', {failureRedirect: '/login' }),
function(req, res) {
res.redirect('/');
});

完全错误:

Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (http.js:644:11)

我错过了什么吗?不知道为什么会发生此错误。我仍然可以使用该应用程序,我只是不想出现错误。

最佳答案

您正在重定向用户,因此 serializeUser 函数被调用了两次。而在

 passport.use(new FacebookStrategy({
...

一定要添加这个 else 否则它会被调用两次,从而发送两次 header 并导致错误。试试这个:

passport.use(new FacebookStrategy({
...
},
function(accessToken, refreshToken, profile, done) {
// asynchronous verification, for effect...
process.nextTick(function () {

// To keep the example simple, the user's Facebook profile is returned to
// represent the logged-in user. In a typical application, you would want
// to associate the Facebook account with a user record in your database,
// and return that user instead.
User.findByFacebookId({facebookId: profile.id}, function(err, user) {
if (err) { return done(err); }
if (!user) {
//create user User.create...
return done(null, createdUser);
} else { //add this else
return done(null, user);
}
});
});
}
));

关于javascript - Passport JS "Can' t 在发送后设置标题",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13557256/

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