0

特定のユーザーのすべてのセッションを期限切れにする良い方法は何ですか? ユーザー -> セッションの別のマップを維持することを考えましたが、セッション Cookie の有効期限が切れたときにマップを更新する方法がわかりません。

4

1 に答える 1

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 (disj (:user ユーザー セッション) :s))

于 2013-10-18T16:01:55.187 に答える