Session 为什么我的铃声会话被重置?

Session 为什么我的铃声会话被重置?,session,clojure,ring,Session,Clojure,Ring,我希望不同的处理程序在会话中设置不同的键,而不会相互影响。我的工作地点是,它建议使用assoc。我想我可以在中使用assoc来更新会话中的路径 (defn handler-one [request] (prn "Session before one" (:session request)) (-> (response "ONE") (content-type "text/plain") (#(assoc-in % [:session :k

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

(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
,它会在一个{:key one“one”}
之前打印
会话,同样地
handler two
会打印之前的会话值

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


我做错了吗

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