【问题标题】:If a session cookie expires after maxAge despite user activity, wouldn't that affect user experience?如果会话 cookie 在 maxAge 之后过期,尽管有用户活动,这不会影响用户体验吗?
【发布时间】:2020-06-24 12:32:09
【问题描述】:

我是一个学习 MERN 堆栈的相对较新的开发人员。目前在决定持久登录方法时遇到问题。关于快速会话,我知道设置 maxAge 选项将允许浏览器在所述毫秒后删除 cookie。

但是,尽管存在用户活动,但可能会导致糟糕的用户体验。我也知道有一个滚动选项允许每个请求都使用新的 cookie。但是,这会带来一个安全漏洞,因为 cookie 可以不断刷新。

是否有固定登录/会话的最佳实践?

【问题讨论】:

  • 您使用哪个存储将会话存储到数据库?
  • @Naresh 我正在使用 mongodb
  • 有很多stores 可以帮助您在数据库中存储/删除会话。我不确定其他人,但我使用的connect-mongo 会在每次用户与会话交互时自动更新maxAge
  • @Naresh 我明白了!但是,cookie 会过期吗?我担心的是 cookie 将在用户处于活动状态时过期,因此会话的过期日期更新将无济于事。我对它的工作方式有误吗?

标签: node.js express express-session


【解决方案1】:

一种常见的做法是使用 JWT 令牌。您可以创建activerefresh 令牌并将refresh 令牌设置为具有较长的过期时间。

这是来自 Auth0 的 article,它提供了 JWT 令牌的摘要以及如何使用 refresh 令牌来保持用户的身份验证。

【讨论】:

  • 感谢您的回复!!如果攻击者可以访问存储在 cookie 中的刷新令牌,攻击者是否无法获得新的访问令牌?
  • @brycegoh 是的。这就是为什么您应该将刷新令牌存储在安全位置,例如受防火墙保护的数据库。您应该验证和审核那里提出的任何请求。如果攻击者确实破坏了您的安全位置,那么您应该立即撤销所有用户令牌并要求重新登录
猜你喜欢
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 2018-11-24
  • 2011-08-23
  • 2013-01-06
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多