【问题标题】:In clojure/ring, how do I delete a cookie?在 clojure/ring 中,如何删除 cookie?
【发布时间】:2012-12-24 21:29:33
【问题描述】:

假设我想删除一个cookie(例如,ring的会话cookie):

制作这样的响应图:

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

似乎可以工作,但感觉有点hacky。

有没有干净的方法来删除它?

【问题讨论】:

  • 将 cookie 过期日期设置为纪元的开始或将最大年龄设置为 0 是删除 cookie 的标准方法,即使在非环形应用程序中也是如此。
  • (defn expire-cookie [resp name] (assoc-in resp [:cookies name] {:value "" :max-age 0}))

标签: session web-applications cookies clojure ring


【解决方案1】:

这似乎是一种相当合理的方式。 Many web a applications 删除 cookie 将替换为即将过期的 cookie。 :max-age 1 语法使它看起来比它在例如 Javascript 中更优雅。

【讨论】:

    【解决方案2】:

    我在 ring.middleware 中使用了 wrap-session 和其他处理程序。 将 cookie 设置为最大年龄在响应中不起作用,因为它刚刚被覆盖(诊断非常令人沮丧!)

    这是我需要做的:

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

    source

    【讨论】:

      【解决方案3】:

      ring似乎不支持这一点,但您可以向用户代理发送一个新的 cookie,该 cookie 具有一个过去的值的 Expires 属性。

      more info

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-22
        • 2020-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-20
        相关资源
        最近更新 更多