2013-01-10 37 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