【问题标题】:Poison.Encoder exception in Phoenix appPhoenix 应用程序中的 Poison.Encoder 异常
【发布时间】:2016-09-24 10:14:15
【问题描述】:

我有一个使用 Guardian 和 Uberauth 保护的 phoenix 应用程序,它从节点应用程序(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 中的字符列表似乎都保持不变。我似乎无法解码该字符列表中的内容,我怀疑这是正在发生的事情的线索。

【问题讨论】:

  • 我知道您提到在添加身份验证之前代码正在运行,但仍然很难说没有代码可能会发生什么。可以分享一下你的代码吗?
  • 像大多数问题一样,我只需要睡在上面,第二天再想一想,然后才意识到出了什么问题。不过感谢您的回复:)

标签: node.js elixir phoenix-framework axios


【解决方案1】:

在某些时候,我决定在身份验证令牌前面加上 Bearer,但是当我创建令牌时,我没有在 Guardian 中使用任何角色。当 Guardian 尝试读取我发回的令牌时,它导致了错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 2020-01-21
    • 2017-02-10
    相关资源
    最近更新 更多