重定向oauth2后未调用deserializeUser



我已经想了两天了。

当我去这个路由'/profile'反序列化用户工作良好

但是,当用户进行身份验证并重定向回回调url时,不会调用deserialzeUser。

我的重定向:

router.get('/discord', passport.authenticate('discord'));
//when the user authorize from discord page:
router.get('/discord/redirect', passport.authenticate('discord', { 
failureRedirect: '/forbidden',
successRedirect: '/profile'
}));

用户被重定向到"/profile",该选项检查他们是否经过了身份验证(这将是false,因为没有调用deserializeUser导致req.user为空(,然后他们将被要求再次进行身份验证,这是因为没有调用反序列化用户。

配置文件路径:

function isAuthorized(req, res, next) {
if(req.user) {
console.log("User is logged in.");
console.log(req.user);
next();
}
else {
console.log("User is not logged in.");
res.redirect('/auth/discord');
}
}
router.get('/profile', isAuthorized, (req, res) => {
console.log(req.user);
res.send('You are logged in =) !');
});

我正在使用来自Heroku的postgress数据库+快递会话+护照不和我的会话:

// Passport store session
const sessionConfig = {
store: new pgSession({
pool: db,
tableName: 'session'
}),
name: 'SID',
secret:process.env.SECRET,
resave: false,
saveUninitialized: false,
cookie: {
maxAge: 1000 * 60 * 60 * 24 * 7,
sameSite: true,
secure: false // ENABLE ONLY ON HTTPS
}};
app.use(session(sessionConfig))
app.use(passport.initialize());
app.use(passport.session());

我发现了我的错误。

只需删除

sameSite:true,

从会话配置

最新更新