Skip to content

Commit a1da756

Browse files
committed
Add :set-cookies? option to wrap-session
Fixes #456. Closes #392.
1 parent 8af4ab9 commit a1da756

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

ring-core/src/ring/middleware/session.clj

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
(defn- session-options
1515
[options]
1616
{:store (options :store (mem/memory-store))
17+
:set-cookies? (options :set-cookies? true)
1718
:cookie-name (options :cookie-name "ring-session")
1819
:cookie-attrs (merge {:path "/"
1920
:http-only true}
@@ -72,7 +73,7 @@
7273
(if response
7374
(-> response
7475
(bare-session-response request options)
75-
cookies/cookies-response))))
76+
(cond-> (:set-cookies? options true) cookies/cookies-response)))))
7677

7778
(defn wrap-session
7879
"Reads in the current HTTP session map, and adds it to the :session key on
@@ -97,7 +98,10 @@
9798
:cookie-attrs - A map of attributes to associate with the session cookie.
9899
Defaults to {:http-only true}. This may be overridden on a
99100
per-response basis by adding :session-cookie-attrs to the
100-
response."
101+
response.
102+
103+
:set-cookies? - If true, automatically include cookie middleware. Defaults to
104+
true for backward compatibility."
101105
([handler]
102106
(wrap-session handler {}))
103107
([handler options]

ring-core/test/ring/middleware/test/session.clj

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,16 @@
7777
response (handler {:cookies {}})]
7878
(is (get-session-cookie response))))
7979

80+
(deftest session-set-cookies
81+
(testing ":set-cookies? is false"
82+
(let [store (make-store (constantly {})
83+
(constantly "foo:bar")
84+
(constantly nil))
85+
handler (constantly {:session {:foo "bar"}})
86+
handler (wrap-session handler {:store store, :set-cookies? false})
87+
response (handler {:cookies {}})]
88+
(is (nil? (get-cookies response))))))
89+
8090
(deftest session-delete-outputs-cookie
8191
(let [store (make-store (constantly {:foo "bar"})
8292
(constantly nil)

0 commit comments

Comments
 (0)