2013-01-10 4 views
13

내가 쿠키를 삭제한다고 가정 (예를 들어, 링의 세션 쿠키) :클로저/링에서 어떻게 쿠키를 삭제합니까?

이 같은 응답지도 만들기 :

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

가 작동하는 것 같다,하지만 조금 해키 느낀다.

그냥 삭제할 수있는 명확한 방법이 있습니까?

+7

0으로 순간 또는 최대 시대의 시작 부분에 쿠키 만료 날짜 중 하나를 설정하면, 심지어 비 링 응용 프로그램에서 쿠키를 삭제하는 표준 방법입니다. – soulcheck

+2

'(defn expire-cookie [resp name] (assoc-in resp [: 쿠키 이름] {: 값 "": 최대 연령 0})) –

답변

11

그건 상당히 합리적인 방법 같아 보입니다. Many web a applications 쿠키를 삭제하면 만료 될 쿠키로 바뀝니다. :max-age 1 구문은 예를 들어 Javascript처럼이 모양을 훨씬 더 우아하게 만듭니다.

2

나는 ring.middleware에서 wrap-session과 다른 핸들러를 사용하고있었습니다. 그것이 바로 덮어 쓰기 된 이후 최대의 나이에 쿠키를 설정 는 응답에서 작동하지 않는

이 내가 할 필요가 무엇인가 (진단에 매우 실망!) :

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

source

0

ring은 이것을 지원하지 않지만 사용자 에이전트에 이전 값의 Expires 속성이있는 새로운 쿠키를 보낼 수 있습니다.

more info