PassportJS调用logout()后请求挂起未重定向问题求助
调用PassportJS的logout()函数清除Cookie Session时,HTTP请求出现pending挂起情况。点击Logout按钮后路由已触发,但请求卡在req.logout()中,未执行重定向,且Cookie仍存在。此前已能正常获取用户信息。
相关代码片段
认证路由(auth.routes.ts)
router.get('/login', (req: Request, res: Response) => { res.render("google-login"); }); router.post('/logout', (req, res, next) => { req.logout(function(err) { if (err) { return next(err); } res.redirect('/auth/login'); }); });
应用配置(app.ts)
app.use(cookieSession({ maxAge: 24 * 60 * 60 * 1000, // 24小时有效期 keys: [process.env.SESSION_KEY] // 用于加密/解密的密钥 })); app.use(passport.initialize()); app.use(passport.session()); app.use('/auth', auth_routes);
Passport序列化与反序列化(passport-setup.ts)
passport.serializeUser((user: any, done) => { done(null, user.id); }); passport.deserializeUser(async (id, done) => { logger.info("deserialize id: " + id); GoogleUserModel.findById(id).then((user) => { done(null, user); }); })
页面模板(profile.ejs)
<body> <nav> <ul> <form action="/auth/logout" method="POST"> <button type="submit">Logout</button> </form> <li><a href="/auth/login">Login</a></li> <li><a href="/">Home</a></li> </ul> </nav> <header> <h2> Welcome <%= google_user.name %>! </h2> <h4> Info </h4> <p> Email: <%= google_user.email %> </p> <p> Google ID: <%= google_user.google_id %> </p> <p> Database ID: <%= google_user.id %> </p> </header> </body>
问题现象
- 点击Logout按钮后,请求卡在
req.logout()函数,处于pending状态 - 重定向逻辑未执行
- 开发者控制台可见Cookie仍未被清除
内容的提问来源于stack exchange,提问作者dashy
相关产品推荐
相关产品推荐

