PassportJS“logout()”请求卡住待处理

PassportJS `logout()` request stuck pending

提问人:dashy 提问时间:10/19/2023 最后编辑:dashy 更新时间:10/19/2023 访问量:34

问:

调用 passport 函数以清除 cookie 会话时,http 请求卡在挂起状态:logout()

我在以下位置设置了路线: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, // 24h * 60m * 60s * 1000ms in a second 
    keys: [process.env.SESSION_KEY] // encrypt/decrypt using this key
}));

app.use(passport.initialize());
app.use(passport.session());''

app.use('/auth', auth_routes);

用户在以下位置被正确序列化/反序列化: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>

Cookie 仍然存在,如通过开发控制台所示:

logout request preceding redirect request after login当按下按钮时,路线被击中,但卡在功能中。在此之前,也会访问正确的用户。我只是不明白为什么请求卡在待处理状态并且没有重定向logoutreq.logout()

node.js typescript express passport.js passport-google-oauth

评论

0赞 merryweather 10/19/2023
是否正在调用回调?
0赞 dashy 10/19/2023
@kelsny错误回调不是。编辑:在进行更多日志记录后,将调用logout()函数,但是一旦命中回调,挂起就开始了。
0赞 merryweather 10/19/2023
我认为您重定向到错误的路径,因此服务器只是忽略该请求。你能试试像 和 这样的变体吗?相关新闻: stackoverflow.com/questions/42034898/..."/login""auth/login"
0赞 dashy 10/19/2023
@kelsny我也看到了那个线程,我尝试了一些变体,但仍然得到同样的东西。我正在设置这些路由以在我的主应用程序文件中使用。我应该注意,我只是双击了该请求,而是收到了一个错误,这很有趣,因为它是一个 POST 请求/authlogoutCannot GET /auth/logout

答: 暂无答案