会话管理 - 可以过期和失效的多个会话?

时间:2016-09-16 01:04:16

标签: session cookies

我正在为我的旁边项目设计一个会话管理系统,我正在努力寻找一个满足以下要求的简单解决方案:

要求:

  1. 用户可以有多个会话
  2. 可以立即使用户的所有会话无效
  3. 用户的会话在30分钟后过期
  4. 我已经看到允许用户拥有自然过期的多个会话的方法(例如Redis和生成的密钥)。但是,这种方法不能提供一种直接的方法来使属于用户的所有会话无效,因为会话的每个密钥都是随机生成的值。

    我还看到了一种方法,用户可以通过跟踪RDBMS表中用户生成的会话ID来拥有多个会话。虽然这样可以很容易地使属于用户的所有会话无效,但我现在有一个额外的进程必须使过期的会话无效/删除,因为数据库(PostgreSQL,MySQL等)不会自己执行此操作。

    有没有办法让我可以拥有所有3个?

1 个答案:

答案 0 :(得分:0)

据我所知,我可以使用redis本身提出一个解决方案。您可以Redis Hash获取所需的所有会话,而不是为每个会话分配一个单独的密钥。

基本上,哈希的键将是您在客户端生成的唯一会话ID,值将是您希望每个会话维护的任何类型的数据(您可以将JSON保存为字符串)。

然后,您可以在整个哈希上应用TTL,以便立即使所有密钥失效。从而满足您的所有要求

相关问题