在尝试在 30 秒不活动后在浏览器端实现自动注销时,我们考虑创建一个/heartbeat
端点:
- 当用户移动鼠标或键入任何键时,会在 10 秒后安排一个 javascript 回调来调用
PUT /heartbeat
. - 如果已经安排了回调,则取消前一个回调 - 这样做是为了避免
PUT /heartbeat
用户连续键入和/或移动鼠标(例如写入内容时)时出现“雪崩”。 - 然后,每 60 秒
GET /heartbeat
发出一次 a - 检查自上次“更新”该用户会话以来已经过去了多少时间。我们可以通过检查烧杯会话表的内容来做到这一点。如果超过 30 分钟,端点会向 Javascript 返回适当的指示,因此用户会自动在浏览器中注销。
这可以正常工作,除了一个小缺陷 -GET /heartbeat
更新烧杯会话时间戳......
所以,问题是 - 在 Pyramid/Beaker 下,有没有办法创建一个不更新会话时间戳的端点?