Permalink
Browse files

Added :session-cookie-attrs response key for wrap-session middleware

  • Loading branch information...
1 parent 66a383a commit 013b92ac450041ea9ae4bc23f80a61cac64f02a9 @weavejester weavejester committed Jun 16, 2010
Showing with 17 additions and 7 deletions.
  1. +7 −7 ring-core/src/ring/middleware/session.clj
  2. +10 −0 ring-core/test/ring/middleware/session_test.clj
View
14 ring-core/src/ring/middleware/session.clj
@@ -28,12 +28,12 @@
(wrap-session handler {}))
([handler options]
(let [store (options :store (memory-store))
- cookie (options :cookie-name "ring-session")
+ cookie-name (options :cookie-name "ring-session")
session-root (options :root "/")
cookie-attrs (merge (options :cookie-attrs) {:path session-root})]
(wrap-cookies
(fn [request]
- (let [sess-key (get-in request [:cookies cookie :value])
+ (let [sess-key (get-in request [:cookies cookie-name :value])
session ((store :read) sess-key)
request (assoc request :session session)
response (handler request)
@@ -42,10 +42,10 @@
((store :write) sess-key (response :session))
(if sess-key
((store :delete) sess-key))))
- response (dissoc response :session)]
+ response (dissoc response :session)
+ cookie {cookie-name (merge cookie-attrs
+ (response :session-cookie-attrs)
+ {:value sess-key*})}]
(if (and sess-key* (not= sess-key sess-key*))
- (assoc response
- :cookies (merge (response :cookies)
- {cookie (merge cookie-attrs
- {:value sess-key*})}))
+ (assoc response :cookies (merge (response :cookies) cookie))
response)))))))
View
10 ring-core/test/ring/middleware/session_test.clj
@@ -81,3 +81,13 @@
response (handler {:cookies {}})]
(is (= (get-in response [:headers "Set-Cookie"])
["ring-session=foo%3Abar;Path=/foo"]))))
+
+(deftest session-attrs-can-be-set-per-request
+ (let [store {:read (constantly {})
+ :write (constantly "foo:bar")}
+ handler (constantly {:session {:foo "bar"}
+ :session-cookie-attrs {:max-age 5}})
+ handler (wrap-session handler {:store store})
+ response (handler {:cookies {}})]
+ (is (= (get-in response [:headers "Set-Cookie"])
+ ["ring-session=foo%3Abar;Max-Age=5;Path=/"]))))

0 comments on commit 013b92a

Please sign in to comment.