如果简单地将请求-map的:会话设置为零将导致注销,我的代码如下所示:
(GET "/logout" [ :as request]
(if-let [useremail (get-in request [:session :ph-auth-email])]
(-> (response {:status 200,
:body (pr-str "logged out " useremail),
:headers {"Content-Type:" "text/html"}})
(assoc request [:session nil]))))但我发现了一个错误:
java.lang.Thread.run(Thread.java:745)
2015-02-18 09:29:05.134:WARN:oejs.AbstractHttpConnection:/logout
java.lang.Exception: Unrecognized body: {:status 200, :body "\"logged out \" \"sova\"", :headers {"Content-Type:" "text/html"}}发布于 2015-02-18 15:30:49
ring.util.response/response只期望主体作为参数,因为它将围绕它构建:status和:headers (参见这里)。然而,映射并不是一个有效的体-只允许字符串、文件、流.
因此,这就是导致异常的原因;现在,关于您的问题:您可以通过将:session设置为response (来源)中的response(来源),从而将您的代码减少到:
(GET "/logout" [:as request]
(if-let [useremail (get-in request [:session :ph-auth-email])]
{:status 200,
:body (pr-str "logged out " useremail),
:session nil, ;; !!!
:headers {"Content-Type" "text/html"}}))https://stackoverflow.com/questions/28586158
复制相似问题