Skip to content

Commit 546ac8d

Browse files
committed
Set default session store as cookie store
Fixes #34.
1 parent 002814a commit 546ac8d

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

src/ring/middleware/defaults.clj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
(:require [ring.middleware.x-headers :as x]
44
[ring.middleware.flash :refer [wrap-flash]]
55
[ring.middleware.session :refer [wrap-session]]
6+
[ring.middleware.session.cookie :refer [cookie-store]]
67
[ring.middleware.keyword-params :refer [wrap-keyword-params]]
78
[ring.middleware.nested-params :refer [wrap-nested-params]]
89
[ring.middleware.anti-forgery :refer [wrap-anti-forgery]]
@@ -18,6 +19,8 @@
1819
[ring.middleware.ssl :refer [wrap-ssl-redirect wrap-hsts wrap-forwarded-scheme]]
1920
[ring.middleware.proxy-headers :refer [wrap-forwarded-remote-addr]]))
2021

22+
(def default-session-store (cookie-store))
23+
2124
(def api-defaults
2225
"A default configuration for a HTTP API."
2326
{:params {:urlencoded true
@@ -42,7 +45,8 @@
4245
:keywordize true}
4346
:cookies true
4447
:session {:flash true
45-
:cookie-attrs {:http-only true}}
48+
:cookie-attrs {:http-only true}
49+
:store default-session-store}
4650
:security {:anti-forgery true
4751
:frame-options :sameorigin
4852
:content-type-options :nosniff}

test/ring/middleware/defaults_test.clj

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,20 @@
3131
(is (.startsWith set-cookie "ring-session="))
3232
(is (.contains set-cookie "HttpOnly")))))
3333

34+
(testing "cookie round trip"
35+
(let [handler (-> (fn [{:keys [session]}]
36+
(-> (response (str (:x session 1)))
37+
(assoc :session (update session :x (fnil inc 1)))))
38+
(wrap-defaults site-defaults))
39+
resp1 (handler (request :get "/"))]
40+
(is (= "1" (:body resp1)))
41+
(let [cookie (->> (get-in resp1 [:headers "Set-Cookie"])
42+
(first)
43+
(re-find #"^ring-session=.*?;"))
44+
resp2 (handler (-> (request :get "/")
45+
(header "Cookie" cookie)))]
46+
(is (= "2" (:body resp2))))))
47+
3448
(testing "default charset"
3549
(let [handler (-> (constantly (-> (response "foo") (content-type "text/plain")))
3650
(wrap-defaults site-defaults))

0 commit comments

Comments
 (0)