Почему я получаю неопознанное тело java.lang.exception на маршрутах с другом/аутентифицированным в качестве оболочки?

Я использую друга вместе с токеном друга-редис, где сеансы хранятся в 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, может ли это противоречить другу?


person Amogh Talpallikar    schedule 18.12.2013    source источник
comment
jsonware что именно?   -  person ponzao    schedule 18.12.2013
comment
это кольцевое промежуточное ПО для json, я просто переименовал его в jsonware внутри своего кода.   -  person Amogh Talpallikar    schedule 19.12.2013


Ответы (1)


Я считаю, что проблема может быть связана с возвращаемым значением session/invalidate-session. Итак, попробуйте что-то вроде этого:

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

Compojure пытается поступать правильно с возвращаемыми значениями маршрутов, и это часто приводит к возникновению подобных проблем.

person ponzao    schedule 22.01.2014