You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PassportJS调用logout()后请求挂起未重定向问题求助

PassportJS调用logout()时请求挂起,Cookie未清除问题

调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 02:46:04