会话结束后从用户浏览器中删除 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 对用户进行身份验证。的主要内容,如果未能解决你的问题,请参考以下文章