Passport-google-oauth无法注销用户

rau*_*aul 3 oauth node.js oauth-2.0 google-oauth passport.js

我使用该passport-google-oauth模块对使用构建的Web应用程序上的用户进行身份验证Express.js。注销事件的处理方式如下:

app.get('/logout', function(req, res) {
    console.log("logged out!");
    req.logout();
    res.redirect('/');
});
Run Code Online (Sandbox Code Playgroud)

尽管确实可以将用户重定向到登录页面(位于/),但我不确定它是否真的将其注销。单击注销后,当我Gmail在新选项卡中打开时,我仍保持登录状态(没有,以前没有登录Gmail过)。我怎样才能解决这个问题?此外,如何req.logout()注销用户?

Wal*_*ers 6

这是完全正常的。当用户登录你的应用程序他的谷歌帐户,他也登录所有谷歌服务。

req.logout() 仅销毁用户登录时由Passport创建的会话。该会话仅链接到您的应用程序,而不链接到整个用户的Google个人资料。

如果您还想从其Google帐户中注销用户,则必须https://accounts.google.com/logout通过单击按钮或类似方式将其重定向到。

但这是一个颇有争议的政策,因为如果您已经登录gmail,YouTube等...,那么您将同时退出所有Google服务。真烦人。

有关更多信息,请查看jmort253的出色解答