2013-01-10 30 views
13

Giả sử tôi muốn xóa một cookie (ví dụ, cookie nhẫn của phiên):Trong clojure/ring, làm cách nào để xóa cookie?

Làm một bản đồ phản ứng như thế này:

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

dường như làm việc, nhưng nó cảm thấy một chút hacky.

Có cách nào mới để xóa nó không?

+7

thiết hoặc cookie sẽ ngày hết hạn để đầu kỷ nguyên hoặc tuổi tối đa để 0 là một cách tiêu chuẩn xóa cookie thậm chí trong các ứng dụng phi-ring. – soulcheck

+2

'(defn expire-cookie [resp name] (assoc-in resp [: tên cookie] {: value" ": max-age 0}))' –

Trả lời

11

Điều đó có vẻ là một cách hợp lý để thực hiện nó. Many web a applications xóa cookie sẽ thay thế chúng bằng một cookie sắp hết hạn. Cú pháp :max-age 1 làm cho giao diện này đẹp hơn nhiều so với trong ví dụ, Javascript.

2

Tôi đã sử dụng phiên kết nối và các trình xử lý khác trong ring.middleware. Thiết cookie để tối đa tuổi đã không được làm việc trong phản ứng vì nó đã được chỉ bị ghi đè

Đây là những gì tôi cần phải làm (rất bực bội để chẩn đoán!):

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

source

0

ring dường như không hỗ trợ điều này, nhưng bạn có thể gửi cho tác nhân người dùng một cookie mới có thuộc tính Expires với giá trị trong quá khứ.

more info

Các vấn đề liên quan