在尝试在30秒不活动后在浏览器端实现自动注销时,我们考虑创建/heartbeat
端点:
PUT /heartbeat
。PUT /heartbeat
的“雪崩”。 / LI>
GET /heartbeat
- 检查自上次更新此用户会话以来已经过了多长时间。我们可以通过检查烧杯会话表的内容来做到这一点。如果超过30分钟,端点会向Javascript返回适当的指示,因此用户将自动在浏览器中注销。这样可以正常工作,除了一个小缺陷 - GET /heartbeat
更新烧杯会话时间戳......
所以,问题是 - 在Pyramid / Beaker下,有没有办法创建一个不更新会话时间戳的端点?
答案 0 :(得分:2)
我最终做的是创建了自己的BeakerSessionFactoryConfig
,以及session_factory_from_settings
(实例化BeakerSessionFactoryConfig
)。
然后我修改了你在这里看到的内容(对self.persist()
)https://github.com/Pylons/pyramid_beaker/blob/6a62134bf99ff8d0836ccc0f6be557b816fa9987/pyramid_beaker/init.py#L32的调用,它是一个条件操作,基于是否在请求对象上设置了某个属性。
这是有效的,因为只要.persists()
未被调用,会话"最后一次访问"时间戳未在数据库中更新(或您正在使用的任何其他存储空间)。