0

我有一个使用 Guardian 和 Uberauth 保护的凤凰应用程序,它从节点应用程序(GraphQL 服务器)接收帖子。通过在授权标头中传递 JWT 来保护它。

授权似乎工作正常,但是在我的 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 请求,如下所示:

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 }

我有点不知道下一步该尝试什么。似乎无论我在有效负载中发送什么,Elixir 中的字符列表似乎都保持不变。我似乎无法解码该字符列表中的内容,我怀疑这是正在发生的事情的线索。

4

1 回答 1

0

在某些时候,我决定为 auth 令牌添加前缀Bearer,但是当我创建令牌时,我没有在 Guardian 中使用任何角色。当 Guardian 试图读取我发回的令牌时,它导致了一个错误。

于 2016-05-26T21:49:33.573 回答