【问题标题】:Expire all sessions for a particular user?使特定用户的所有会话过期?
【发布时间】:2013-10-18 05:34:00
【问题描述】:

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

【问题讨论】:

    标签: session web-applications clojure ring


    【解决方案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))

    • 从 :user 中删除会话 :s

      (assoc user-sessions :user (disj (:user user-sessions) :s))

    【讨论】:

      猜你喜欢
      • 2017-11-13
      • 2013-05-08
      • 1970-01-01
      • 2020-08-14
      • 2017-06-07
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      相关资源
      最近更新 更多