【问题标题】:How to detect if session is about to expire?如何检测会话是否即将到期?
【发布时间】:2019-08-20 12:19:27
【问题描述】:

我正在为我的 Go 网站使用 Gorilla Sessions 来管理用户登录。 有时,当用户离开他们的计算机一个小时左右时,会话就会过期,但他们对此一无所知。所以用户继续他们的工作,但一旦他们试图保存他们的进度,他们就会被注销。有什么方法可以检测用户的会话是否即将到期,以便自动保存他们的工作或显示警告消息?

【问题讨论】:

  • 如果您有待处理的工作要保存,那么为什么不直接保存呢?如果工作在远程客户端(例如网络浏览器)上,那么客户端需要这样做。
  • 如果 cookie 包含过期数据,客户端可以通过 JavaScript 检查。如果没有,客户端将需要通过 JavaScript 调用服务器以了解它是否已过期或将在多长时间内过期以通知用户。如何在不丢失他们正在进行的工作的情况下通知他们是用户体验设计的一项练习。
  • @Adrian,会话 cookie 通常(希望如此!)标记为 HttpOnly,因此无法从 JS 访问。
  • 是的。所以,和我写的差不多,如果你能直接从JS检查,直接从JS检查,如果不能,从JS调用服务器检查。
  • 或者将过期时间添加到标记中,例如在元标记中。如果您这样做,还将服务器的当前时间作为参考。客户的时钟本身显然是不可靠的。

标签: session go gorilla


【解决方案1】:

解决方案:

一旦客户端登录,他们就会从服务器收到会话到期日期。然后我在客户端设置了一个计时器,它在空闲 X 分钟(在我的情况下为 10 分钟)后,每分钟调用一次 API 并检查会话是否仍然存在以及剩余的时间是否超过两分钟。如果只剩下两分钟,我会在客户端发出一条警告消息,通知用户他们的会话即将到期(我也使用此事件来触发自动保存功能)。

【讨论】:

    猜你喜欢
    • 2017-05-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多