【问题标题】:Why is my Ring session being reset?为什么我的 Ring 会话被重置?
【发布时间】:2014-03-05 17:59:21
【问题描述】:

我希望不同的处理程序在会话中设置不同的键而不会相互影响。我在this wiki article 工作,它建议使用assoc。我想我可以使用assoc-in 来更新会话中的路径。

(defn handler-one
  [request]
  (prn "Session before one" (:session request))
  (-> (response "ONE")
          (content-type "text/plain")
          (#(assoc-in % [:session :key-one] "one"))))

(defn handler-two
  [request]
  (prn "Session before two" (:session request))
  (-> (response "TWO")
          (content-type "text/plain")
          (#(assoc-in % [:session :key-two] "two"))))

如果我反复调用handler-one,它会打印Session before one {:key-one "one"},同样handler-two 会打印上一个会话值。

通过使用assoc-in 设置会话密钥,我希望设置两个密钥,即{:key-one "one" :key-two "two"}。但似乎整个会话字典都被替换了。

我做错了吗?

【问题讨论】:

    标签: session clojure ring


    【解决方案1】:

    您正在打印请求中的会话,但您正在关联(不存在的)会话作为响应,因此您最终得到的会话只有最后添加的属性。您应该从请求中获取会话,将其关联到该会话中,然后将新会话作为响应的一部分返回。

    【讨论】:

      猜你喜欢
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      • 2020-03-24
      • 2013-10-20
      • 1970-01-01
      • 2014-11-25
      • 1970-01-01
      • 2018-07-10
      相关资源
      最近更新 更多