boechat107.ring-ttl-session

https://github.com/boechat107/ring-ttl-session.git

git clone 'https://github.com/boechat107/ring-ttl-session.git'

(ql:quickload :boechat107.ring-ttl-session)
2

ring-ttl-session

travis-status

A session storage that stores session data in-memory with a time-to-live (TTL). It's very similar to ring.middleware.session.memory, but it may use expiring-map (default) or core.cache instead of a Clojure's native map.

Installation

Clojars Project

Usage

The difference from the Ring's native in-memory session store is minimal.

(require '[ring.middleware.session :refer [wrap-session]]
         '[ring-ttl-session.core :refer [ttl-memory-store]])

(def app
  ;; Using the default implementation, expiring-map.
  (wrap-session handler {:store (ttl-memory-store (* 60 30))}))

;; Using core.cache
;; (ttl-memory-store (* 60 30) :core-cache)

The argument of ttl-memory-store is the expiration time given in seconds (the example's session expires in 30 minutes). At least for now, it's recommended to use the default implementation (expiring-map) because of it's low performance overhead when compared with the bare in-memory session store (check the ring-ttl-session.performance namespace or this issue for details).

Listeners

Another interesting feature of expiring-map, the default implementation, is the support for listeners.

(ttl-memory-store (* 60 30) {:listeners [(fn [k v] (println k v))]})

Other supported features and options can be checked in the project's page.

License

Copyright © 2015 Andre Boechat

Distributed under the Eclipse Public License, the same as Clojure.