让特定用户的所有会话到期的好方法是什么?我想保留用户 - >会话的单独地图,但我不确定如何在会话cookie到期时更新地图。
答案 0 :(得分:1)
假设你在内存中使用原子或类似的东西(我不认为是生产方式的东西)你可以这样做:
将会话存储在具有自己属性的地图中:
sessions = {
s1 -> {...}
s2 -> {...}
s3 -> {...}
...
}
将用户会话存储在单独的集合映射中:
user-sessions = {
user1 -> #{s1 s2 s3}
user2 -> #{s4 s5 s6}
}
您需要解决以下需要更新集合的操作:
将新会话:s添加到:user
(assoc user-sessions:user(conj(:user user-sessions):s))
从以下位置删除会话:用户
(assoc user-sessions:user(disj(:user user-sessions):s))