会话结束后从用户浏览器中删除 cookie。我使用 Passport-twitter 对用户进行身份验证。

Posted

技术标签:

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

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

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

感谢任何帮助

【问题讨论】:

【参考方案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 检索有关刷新令牌的最新数据。

以上是关于会话结束后从用户浏览器中删除 cookie。我使用 Passport-twitter 对用户进行身份验证。的主要内容,如果未能解决你的问题,请参考以下文章

过期时间为“会话结束”的 cookie 啥时候过期?

在Flask和Flask-Login中删除会话cookie

将cookie设置为在会话结束时过期?网

在 chrome 中未删除会话 cookie 的解决方法

浏览器会话结束时 Cookie 过期

Cookie的使用