2013-01-10 40 views
13

假设我想删除一个cookie(例如环的会话cookie):在clojure/ring中,如何删除cookie?

制作响应图是这样的:

{:cookies {"ring-session" {:value "kill", :max-age 1}}} 

似乎工作,但感觉有点哈克。

是否有一个干净的方式来删除它?

+7

或者cookie的有效期设置为时代或最大年龄开始到0甚至非环应用删除的cookie的标准方式。 – soulcheck

+2

'(defn expire-cookie [resp name] (assoc-in resp [:cookies name] {:value“”:max-age 0}))'' –

回答

11

这似乎是一个相当合理的方式去实现它。 Many web a applications删除Cookie将其替换为即将过期的Cookie。 :max-age 1语法使其看起来比它的样式更优雅,例如Javascript

2

我正在使用wrap-session和ring.middleware中的其他处理程序。 设置cookie来最大年龄的反应是行不通的,因为它只是被覆盖

这是我需要做的(非常令人沮丧的诊断!):

(defn clear-session! [resp] 
(assoc resp :session nil)) 

source

0

ring似乎不支持此操作,但您可以向用户代理发送一个新的Cookie,其中的Expires属性包含过去的值。

more info