You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

devise_token_auth问题:POST请求curl为何未返回uid/client id/token?

用curl测试devise_token_auth认证系统

我之前已经按要求在Rails应用里配置好了devise_token_auth,为了搞清楚React端fetch请求该传哪些正确参数,先拿curl来测试这套认证系统。参考官方文档和一篇只讲注册流程的StackOverflow帖子,我已经实现了curl用户注册,而且注册成功后能拿到返回的uid、client id和access token。

注册请求的curl示例

curl -X POST \
  http://your-rails-app-url/auth \
  -H 'Content-Type: application/json' \
  -d '{
    "email": "test@example.com",
    "password": "your-password",
    "password_confirmation": "your-password"
  }'

执行这个命令后,响应里会包含我们需要的核心认证字段:uid、client、access-token,这些是后续所有需要认证的请求必须携带的参数。

后续认证请求的参数要求

根据devise_token_auth的文档要求,后续的登录、获取用户信息等需要认证的请求,必须在请求头里携带以下三个参数:

  • uid: 注册时返回的用户唯一标识
  • client: 注册时返回的客户端ID
  • access-token: 注册时返回的访问令牌
React Fetch请求示例

比如要获取当前用户信息,fetch代码可以这么写:

fetch('http://your-rails-app-url/auth/validate_token', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'uid': '返回的uid值',
    'client': '返回的client值',
    'access-token': '返回的access-token值'
  }
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

需要注意的是,每次请求成功后,响应头里可能会返回新的access-token,记得要更新本地存储的令牌,避免后续请求失效。

内容的提问来源于stack exchange,提问作者Elliot Tregoning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:02:23