2013-01-10 26 views
13

Przypuśćmy, że chcesz usunąć plik cookie (na przykład sesja cookies Pierścień jest):W clojure/ring, w jaki sposób mogę usunąć plik cookie?

Making mapę odpowiedzi tak:

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

wydaje się działać, ale czuje się nieco hacky.

Czy istnieje czysty sposób, aby go po prostu usunąć?

+7

ustawienie albo ciasteczka datę ważności na początku epoki lub max wieku 0 jest standardowym sposobem usuwania plików cookie nawet w zastosowaniach nie-ring. – soulcheck

+2

'(defn expire-cookie [nazwa:] (assoc-in resp [: nazwa ciasteczka] {: value" ": max-age 0}))' –

Odpowiedz

11

Wydaje się, że jest to całkiem rozsądny sposób. Many web a applications usuń pliki cookie, zastępując je plikami, które wkrótce wygasną. Składnia :max-age 1 sprawia, że ​​wygląda to bardziej elegancko niż na przykład w wersji Javascript.

2

Używałam wrap-session i innych programów obsługi w ring.middleware. Ustawianie cookie do max wiek nie działa w odpowiedzi, ponieważ właśnie zastąpieniem

To jest to, co potrzebne do zrobienia (bardzo frustrujące, aby zdiagnozować!):

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

source

0

ring Wygląda na to, że nie obsługuje tego, ale możesz wysłać użytkownikowi użytkownika nowy plik cookie z atrybutem Expires z wartością z przeszłości.

more info

Powiązane problemy