【发布时间】:2019-08-20 12:19:27
【问题描述】:
我正在为我的 Go 网站使用 Gorilla Sessions 来管理用户登录。 有时,当用户离开他们的计算机一个小时左右时,会话就会过期,但他们对此一无所知。所以用户继续他们的工作,但一旦他们试图保存他们的进度,他们就会被注销。有什么方法可以检测用户的会话是否即将到期,以便自动保存他们的工作或显示警告消息?
【问题讨论】:
-
如果您有待处理的工作要保存,那么为什么不直接保存呢?如果工作在远程客户端(例如网络浏览器)上,那么客户端需要这样做。
-
如果 cookie 包含过期数据,客户端可以通过 JavaScript 检查。如果没有,客户端将需要通过 JavaScript 调用服务器以了解它是否已过期或将在多长时间内过期以通知用户。如何在不丢失他们正在进行的工作的情况下通知他们是用户体验设计的一项练习。
-
@Adrian,会话 cookie 通常(希望如此!)标记为 HttpOnly,因此无法从 JS 访问。
-
是的。所以,和我写的差不多,如果你能直接从JS检查,直接从JS检查,如果不能,从JS调用服务器检查。
-
或者将过期时间添加到标记中,例如在元标记中。如果您这样做,还将服务器的当前时间作为参考。客户的时钟本身显然是不可靠的。