Яд.Исключение кодировщика в приложении Phoenix

У меня есть приложение phoenix, защищенное с помощью guardian и Uberauth, который получает сообщения от приложения узла (сервер Grapql). Это защищено путем передачи JWT в заголовке авторизации.

Разрешение, кажется, работает хорошо, однако в моем Phoenix controller, он взрывается с

** (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

Работает 100% правильно, как и ожидалось!

Мой исходящий запрос Axios выглядит так:


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 }

I’m at a bit of a lost of what to try next. Кажется, что независимо от того, что я отправляю в полезную нагрузку, список символов в Elixir, кажется, остается тем же самым. Кажется, я не могу расшифровать то, что находится в этом списке символов, который, как я подозреваю, является ключом к тому, что происходит.

1 ответ

  1. В какой-то момент я решил приставить маркер auth Bearer, однако я не использовал роли в Guardian при создании маркеров. Когда Guardian попытался прочитать маркер, который я отправил обратно, это вызвало ошибку.