【问题标题】:passport-google-oauth unable to logout user护照-谷歌-oauth 无法注销用户
【发布时间】:2014-10-20 13:37:01
【问题描述】:

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

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

虽然这确实将用户重定向到登录页面(/),但我不确定它是否真的将他注销。单击注销后,当我在新选项卡中打开Gmail 时,我仍然在那里登录(不,我之前没有登录Gmail)。我怎样才能解决这个问题?另外,req.logout() 做了什么来注销用户?

【问题讨论】:

  • 更多详情请告诉我

标签: node.js oauth oauth-2.0 google-oauth passport.js


【解决方案1】:

这是完全正常的。 当用户使用他的 Google 帐户登录您的应用程序时,他也会登录所有 Google 服务。

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

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

但这是一个备受争议的政策,因为如果您已经登录到 gmail、YouTube 等...,您将同时从所有 Google 服务中注销。很烦人。

如需了解更多信息,请查看 jmort253 的this great answer

【讨论】:

    【解决方案2】:

    那是因为谷歌的会话没有过期,你可以在谷歌结束时使用这个。

    // route for logging out
    app.get('/logout', function(req, res) {
        req.session.destroy(function(e){
            req.logout();
            res.redirect('/');
        });
    });
    

    它会从应用程序中破坏您的会话。但如果你想完全退出谷歌账户,你可以重定向到

    https://mail.google.com/mail/u/0/?logout&hl=en

    地址

    【讨论】:

      猜你喜欢
      • 2013-05-07
      • 2019-01-29
      • 2019-11-15
      • 2019-11-24
      • 2012-09-10
      • 2020-09-03
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多