【发布时间】:2017-01-24 03:32:55
【问题描述】:
我正在为我的一个副项目设计一个会话管理系统,并且我正在努力寻找一个简单的解决方案来满足以下要求:
要求:
- 一个用户可以有多个会话
- 用户的所有会话可以一次失效
- 用户的会话将在 30 分钟后过期
我已经看到允许用户拥有多个自然过期的会话的方法(例如 Redis 和生成的密钥)。但是,这种方法并没有提供一种直接的方法来使属于用户的所有会话无效,因为会话的每个键都是随机生成的值。
我还看到了通过在 RDBMS 表中跟踪为用户生成的会话 ID 来让用户拥有多个会话的方法。虽然这可以很容易地使属于用户的所有会话无效,但我现在有一个额外的过程必须使过期的会话无效/删除,因为数据库(PostgreSQL、MySQL 等)不会自行执行此操作。
有没有一种方法可以让我同时拥有这三个?
【问题讨论】:
-
请问您为什么要多个会话而不是单个会话,甚至根本不需要会话?
-
我希望允许多个设备、浏览器等能够使用相同的凭据进行身份验证,但被视为独立会话。不过,“根本没有会话”确实带来了一些有趣的想法。感谢您的想法!
-
从您的 Web 服务器的角度来看,会话就是会话,这意味着不应该有任何先验因素会阻止您的服务器为同一用户进行移动和桌面会话。
-
正确,但假设浏览器注销。 Web 服务器如何知道是否使该会话无效?也许移动设备仍在使用它?
-
所以您希望多台设备共享同一个会话?