Session 是否终止特定用户的所有会话?

Session 是否终止特定用户的所有会话?,session,web-applications,clojure,ring,Session,Web Applications,Clojure,Ring,对于特定的用户,什么是使所有会话过期的好方法?我曾想过维护用户->会话的单独映射,但我不确定在会话cookie过期时如何更新映射。假设内存中的所有会话都使用atom或类似的东西(我不认为这是生产方面的问题),您可以这样做: 将会话存储在具有自己属性的映射中: sessions = { s1 -> {...} s2 -> {...} s3 -> {...} ... } 将用户会话存储在单独的集合映射中: user-sessions = { user1 ->

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

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

将会话存储在具有自己属性的映射中:

sessions = {
  s1 -> {...}
  s2 -> {...}
  s3 -> {...}
  ...
}
将用户会话存储在单独的集合映射中:

user-sessions = {
 user1 -> #{s1 s2 s3}
 user2 -> #{s4 s5 s6}
}
您需要解决以下需要更新集合的操作:

  • 将新会话添加到:用户

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

  • 从用户中删除会话

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