【问题标题】:devise_token_auth: Why is my POST curl not returning uid/client id/token?devise_token_auth:为什么我的 POST curl 没有返回 uid/client id/token?
【发布时间】:2018-05-08 04:59:22
【问题描述】:

我已按照在我的 rails 应用程序中设置设计令牌身份验证的所有说明进行操作,但首先我尝试使用 curl 测试身份验证系统,以便我知道要包含在我的 react fetch 代码中的正确参数。

使用设计令牌身份验证的官方文档以及另一个 stackoverflow 帖子(显示注册但未登录),我能够弄清楚如何使用 curl 注册用户。使用 curl 注册会返回 uid、客户端 ID 和访问令牌,但根据文档,登录也应该返回这些值,我需要能够存储它们以进行会话控制。

这是我的 curl(myserver.commyphonenumber 是实际 url 和电话号码的占位符)

curl -POST -v -H 'Content-Type: application/json' https://myserver.com/auth/sign_in -d '{"email": "test@test.com", "password": "rabbit"}'

返回以下响应:

> POST /auth/sign_in HTTP/1.1
> Host: myserver.com
> User-Agent: curl/7.54.0
> Accept: */*
> Content-Type: application/json
> Content-Length: 54
>
* upload completely sent off: 54 out of 54 bytes
< HTTP/1.1 200 OK
< Server: nginx/1.6.2
< Date: Tue, 08 May 2018 04:47:02 GMT
< Content-Type: application/json; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Vary: Accept-Encoding
< Vary: Accept-Encoding
< X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 1; mode=block
< X-Content-Type-Options: nosniff
< ETag: W/"54281896f954d99dcd6989e8e82e7d79"
< Cache-Control: max-age=0, private, must-revalidate
< X-Request-Id: 1f619b39-87d4-44f4-9990-c0804a2a0a74
< X-Runtime: 0.311010
< Front-End-Https: on
<
* Connection #0 to host myserver.com left intact
{"data":{"id":12,"email":"test@test.com","provider":"phone","uid":"test@test.com","name":null,"image":null,"phone_number":"myphonenumber"}}

我觉得我的 POST 可能缺少标题或其他东西......但它给我的输出并没有提供太多线索。我知道名称和图像被标记为空,但从我在文档中阅读的内容来看,它们似乎没有必要。此外,如果我缺少参数,它通常会给我一个 400 错误请求。

【问题讨论】:

    标签: authentication curl post devise jwt


    【解决方案1】:

    我觉得我的 POST 可能缺少标题或其他内容。

    您的 HTTP 发布请求标头:

    > POST /auth/sign_in HTTP/1.1
    > Host: myserver.com
    > User-Agent: curl/7.54.0
    > Accept: */*
    > Content-Type: application/json
    > Content-Length: 54
    

    这是返回的 JSON:

    {"data":{"id":12,"email":"test@test.com","provider":"phone","uid":"test@test.com","name":null,"image":null,"phone_number":"myphonenumber"}}
    

    【讨论】:

    • 我知道,但标题应该返回更多值。当我使用 curl 注册时,它会返回 uid、客户端 ID 和访问令牌。设计令牌身份验证文档还说它也应该在登录时返回这些值,但事实并非如此。我需要这些值,以便可以将它们保存到持久会话中。内容类型在 POST curl 中指定为标题,我想也许我也需要为访问令牌包含一些内容,但我不确定要包含什么。
    • 如果您可以在浏览器中执行此操作,请使用浏览器的开发人员工具的“网络”选项卡来准确获取发布的内容和返回的内容。我有时会从浏览器复制整个请求标头并将其全部添加到 curl 请求中。我对命令行curl不太熟悉,我一般用PHP。
    • 这是一个移动应用程序,我现在通过终端发出请求纯粹是为了测试目的。问题是,我是否可以在浏览器中看到结果并不重要,我现在只是在测试它。我的应用程序需要可以访问它,以便我可以存储令牌以供将来登录。
    猜你喜欢
    • 2016-11-11
    • 2017-07-05
    • 2015-12-07
    • 2017-11-25
    • 1970-01-01
    • 2013-03-02
    • 2012-09-07
    • 1970-01-01
    相关资源
    最近更新 更多