我使用passport-google-oauth
模块对使用Express.js
构建的Web应用程序上的用户进行身份验证。注销事件以这种方式处理:
app.get('/logout', function(req, res) {
console.log("logged out!");
req.logout();
res.redirect('/');
});
虽然这会将用户重定向到登录页面(/
),但我不确定它是否真的将其记录下来。单击注销后,当我在新选项卡中打开Gmail
时,我仍然在那里登录(不,我之前没有登录Gmail
)。我怎样才能解决这个问题?此外,req.logout()
如何将用户注销?
答案 0 :(得分:4)
这是完全正常的。 当用户使用他的Google帐户登录 您的应用时,他还会登录 所有Google服务。
req.logout()
仅会在用户登录时销毁Passport创建的会话。该会话仅与您的应用程序相关联,而不是与整个用户的Google个人资料相关联。
如果您想要从他的Google帐户中注销该用户,则必须通过点击按钮或类似内容将其重定向到https://accounts.google.com/logout
。
但这是一个非常有争议的政策,因为如果您已经登录gmail,YouTube等...,您将同时从所有Google服务中退出。非常讨厌。
有关详细信息,请查看jmort253的this great answer。
答案 1 :(得分:2)
这是因为谷歌的会话未过期,你可以在google端使用这个。
// route for logging out
app.get('/logout', function(req, res) {
req.session.destroy(function(e){
req.logout();
res.redirect('/');
});
});
它会从app中销毁你的会话。但如果您想要从谷歌帐户完全注销,您可以重定向到
地址