【问题标题】:Delete cookie from user browser after the session ends. Im using Passport-twitter to authenticate the user.会话结束后从用户浏览器中删除 cookie。我使用 Passport-twitter 对用户进行身份验证。
【发布时间】:2019-02-20 02:34:03
【问题描述】:

您好,我正在构建一个使用 passport-twitter 对用户进行身份验证的应用程序,我能够使用 twitter 凭据成功登录用户,但我希望在我们注销时用户(销毁会话),所以cookie 也被销毁了,所以用户每次回到应用程序时,都需要再次进行身份验证。所以我猜我的会话必须修改,但我不知道如何。

app.use(session({
  secret: "our-passport-local-strategy-app",
  resave: true,
  saveUninitialized: true
}));

感谢任何帮助

【问题讨论】:

    标签: node.js express passport.js passport-twitter sttwitterapi


    【解决方案1】:

    尝试使用 Passport 的官方方法进行注销。 request 对象有一个可以使用的装饰器。如果您使用的是 Express.js 4.x,则“结果”对象也有 cookie manipulating decorators

    app.get('/logout', function(req, res){
      // Destroy the session if any
      req.logout();
      // Clear the specified cookies
      res.clearCookie('your_key');
      // Redirect to homepage
      res.redirect('/');
    });
    

    【讨论】:

    • 有什么方法可以给 cookie 在浏览器中存在的具体时间?即使在使用这条路线(“/注销”)之后,因为在我的 app.use(session).... 我没有 maxAge,因为我使用的是护照,我不知道如何修改我的会话。
    • 这没有任何意义。为用户终止会话与 cookie 的到期日期无关
    • 我应该解释得更好一点,所以我试图销毁 cookie 的原因是每次你使用我的应用程序时,你都必须进入身份验证过程才能访问 twitter 数据,但是每个时间它可以即时访问。所以我想这是因为饼干。注销的唯一方法实际上是去 twitter 并从那里删除应用程序。所以我的问题是我希望一天后,如果我想通过我的应用程序登录到 twitter,我将不得不再次进行身份验证(用户名、密码)。感谢您的帮助
    • 我希望能在这个问题上提供更多帮助
    • 你所问的是不可能的。您不能从外部身份验证服务中注销用户。您应使用生成的会话为您的一方设置到期日期。如果您想使用 OAUTH 检索有关刷新令牌的最新数据。
    猜你喜欢
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多