У меня есть приложение phoenix, защищенное с помощью опекуна и Uberauth, которое получает сообщения от узла (GraphQL server). Он защищен передачей JWT в заголовке авторизации.Исключение Poison.Encoder в приложении Phoenix
Разрешение, кажется, работает нормально, однако в моем контроллере Phoenix, он дует с
** (FunctionClauseError) no function clause matching in Poison.Encoder.BitString.chunk_size/3 (poison) lib/poison/encoder.ex:127: Poison.Encoder.BitString.chunk_size(<<5, 230, 171, 122, 183, 178, 38, 22, 198, 114, 35, 162, 36, 133, 51, 83, 19, 34, 34, 194, 39, 71, 151, 2, 35, 162, 36, 165, 117, 66, 39, 13::size(4)>>, nil, 0)
Прежде чем я добавил проверку подлинности, это работает правильно. Незнакомец по-прежнему, завиток запрос, например следующим образом:
curl -i -H "authorization: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJVc2VyOjIiLCJleHAiOjE0OTU2MjU3MjEsImlhdCI6MTQ2NDA4OTcyMSwiaXNzIjoiU2hvcHNoYXJlIiwianRpIjoiMDE2OTJjMzctM2QxYi00Yzc5LThiMjYtYzExN2QyNTM1MGI5IiwicGVtIjp7fSwic3ViIjoiVXNlcjoyIiwidHlwIjoidG9rZW4ifQ.GfqVSw3hPsy-zOp1yx6IXAGhM4uX0CsMbU3DHqtFCn7SQYPi24DJ2F4yC48cfiQi82-hvpUoxdnFm_x5osBb3w" -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"comment": {"content": "test"}}' http://localhost:8081/api/v1/current_user/products/1/comments
Works 100% правильно, как и ожидалось!
Мой исходящий запрос Вардар выглядит следующим образом:
frontend_1 | { headers: frontend_1 | { authorization: 'Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJVc2VyOjIiLCJleHAiOjE0OTU3OTg4OTUsImlhdCI6MTQ2NDI2Mjg5NSwiaXNzIjoiU2hvcHNoYXJlIiwianRpIjoiYWE2YTE2M2YtYzM5ZC00ODVjLTgwMjEtMDMxMjUwNzc4YjcxIiwicGVtIjp7fSwic3ViIjoiVXNlcjoyIiwidHlwIjoidG9rZW4ifQ.4vosfEx69s_90UlCkgWNbxoNNAKuckYvqNRsqfznvzddI-k63LaXz7MWum82aSiHDkiw7L3tk6df8tZVh2Zz_A', frontend_1 | Accept: 'application/json', frontend_1 | 'Content-Type': 'application/json' }, frontend_1 | timeout: 0, frontend_1 | transformRequest: [ [Function: transformResponseJSON] ], frontend_1 | transformResponse: [ [Function: transformResponseJSON] ], frontend_1 | method: 'post', frontend_1 | url: 'http://api:8080/api/v1/current_user/products/2/comments', frontend_1 | data: { comment: { content: 'test' } }, frontend_1 | withCredentials: undefined }
Я на немного потерянным, что попробовать следующий. Кажется, что независимо от того, что я отправляю в полезную нагрузку, список символов в Elixir, похоже, остается прежним. Я не могу, по-видимому, расшифровать то, что находится в этом списке символов, который, как я подозреваю, является ключом к тому, что происходит.
Я понимаю, что вы упомянули, что код работал до того, как вы добавили аутентификацию, но по-прежнему трудно сказать, что может происходить здесь без кода. Можете ли вы поделиться своим кодом, пожалуйста? –
Как и большинство проблем, мне просто нужно было спать на нем и подумать об этом на следующий день, прежде чем осознать, что было не так. Спасибо за ответ, хотя :) – Samuel