0

使特定用户的所有会话过期的好方法是什么?我想维护单独的用户->会话映射,但我不确定会话 cookie 过期时如何更新映射。

4

1 回答 1

1

假设您使用原子或类似的东西(我认为这不是生产方面的东西)在内存中拥有所有会话,您可以这样做:

将会话存储在具有自己属性的地图中:

sessions = {
  s1 -> {...}
  s2 -> {...}
  s3 -> {...}
  ...
}

将用户会话存储在单独的集合映射中:

user-sessions = {
 user1 -> #{s1 s2 s3}
 user2 -> #{s4 s5 s6}
}

您需要解决以下需要更新集合的操作:

  • 将新会话 :s 添加到 :user

    (关联用户会话:用户(conj(:用户用户会话):s))

  • 从 :user 中删除会话 :s

    (关联用户会话:用户(disj(:用户用户会话):s))

于 2013-10-18T16:01:55.187 回答