为什么我在带有friend / authenticated作为包装器的路由上获得java.lang.exception无法识别的主体?

时间:2013-12-18 12:25:28

标签: clojure friend compojure

我正在使用朋友和friend-redis-token,其中会话以redis形式存储在我的compojure应用程序中。

对于像...这样的路线。

  (POST "/service/logout" {headers :headers}
          (session/invalidate-session
           (headers "x-auth-token")))

一切正常!

只要我使用friend / authenticated包装处理程序。 我收到了错误

:WARN:oejs.AbstractHttpConnection:/service/logout
java.lang.Exception: Unrecognized body: ...

我正在使用以下中间件:

                        (jsonware/wrap-json-body)
                        (jsonware/wrap-json-params)
                        (jsonware/wrap-json-response)

将身体中的所有内容转换为JSON,这可能与朋友发生冲突吗?

1 个答案:

答案 0 :(得分:1)

我认为问题可能在于session/invalidate-session的返回值。所以尝试这样的事情:

(POST "/service/logout" {headers :headers}
  (do (session/invalidate-session
        (headers "x-auth-token"))
      ""))

Compojure试图巧妙地使用路由的返回值做正确的事情,这通常会导致这样的问题。