使特定用户的所有会话过期的好方法是什么?我想维护单独的用户->会话映射,但我不确定会话 cookie 过期时如何更新映射。
问问题
58 次
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 回答