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

如何在SurrealDB中通过signin返回的JWT Token获取并填充用户对象?

在SurrealDB中利用JWT Token获取并填充用户对象

1. 携带JWT Token发起认证请求

所有需要认证的请求必须在请求头中添加Authorization字段,格式为Bearer <你的JWT Token>,这是SurrealDB识别认证身份的标准方式。

2. 查询当前认证用户对象

SurrealDB内置了$auth变量,直接查询该变量即可获取当前已认证用户的完整记录,无需手动指定用户ID:

curl示例

curl -X POST 'http://你的SurrealDB地址/sql' \
-H 'Authorization: Bearer 你的JWT_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"query": "SELECT * FROM $auth;"}'

JavaScript示例(前端/Node.js)

const jwtToken = "你的JWT_TOKEN";

fetch('http://你的SurrealDB地址/sql', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${jwtToken}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    query: 'SELECT * FROM $auth;'
  })
})
.then(res => res.json())
.then(data => {
  // 从返回结果中提取用户对象
  const currentUser = data.result[0];
  // 在这里用用户对象填充应用逻辑(比如渲染用户信息、存入状态管理)
  console.log("当前认证用户:", currentUser);
})
.catch(err => console.error("获取用户失败:", err));

3. 进阶:关联查询或获取用户ID

如果仅需用户ID,可直接使用user()函数:

SELECT user() AS userId;

若要关联查询用户的关联数据(比如用户的订单),可结合$auth实现:

SELECT * FROM $auth, ->orders->order;

注意事项

  • 确保JWT Token未过期,过期后需重新调用signin()获取新Token
  • Authorization头格式必须严格:Bearer后需跟一个空格,再拼接Token
  • 提前在用户表(如user表)定义好所需字段(如email、username),否则$auth返回的对象不会包含这些数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 00:15:44