Surreal DB:如何获取解码后的JWT令牌?附curl查询示例
关于SurrealDB登录后获取JWT解码内容的问题
能否在登录响应中直接获取解码后的JWT?
SurrealDB的登录接口默认不会在响应中直接返回解码后的JWT内容。登录成功后只会返回加密签名后的完整JWT字符串,因为JWT的Payload部分本身是Base64URL编码(而非加密),客户端可以自行解码获取元数据,无需依赖服务端接口。
如果需要在UI展示解码后的内容,直接在前端拆分JWT的三个部分(header.payload.signature),提取中间的Payload部分做Base64URL解码即可。
通过JWT查询用户元数据的curl示例
若你需要通过服务端接口验证JWT并获取用户元数据,可使用SurrealDB的INFO FOR语句实现,以下是curl示例:
curl -X POST "http://your-surrealdb-instance:8000/sql" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE2NzIwMzc2MjMsIm5iZiI6MTY3MjAzNzYyMywiZXhwIjoxNjcyMTI0MDIzLCJpc3MiOiJTdXJyZWFsREIiLCJOUyI6InRlc3QiLCJEQiI6InRlc3QiLCJTQyI6InVzZXIiLCJJRCI6InVzZXI6czFiN3JzcnlxNW9jdDVmM2FrdHEifQ.BBhUechMxdL0Vt3SIOHd3vAVDgieBRXhwhMgTZLpXn50fCB-j2P7JpA8BLwY3KmA_he4A" \ -d '{ "ns": "test", "db": "test", "sql": "INFO FOR USER;" }'
关键说明:
- 替换
http://your-surrealdb-instance:8000为你的SurrealDB实例实际地址和端口 Authorization头中Bearer后需填入你的完整JWT令牌ns(命名空间)和db(数据库)要与JWT中携带的对应字段一致(你的JWT中为test和test)INFO FOR USER;语句会返回当前认证用户的完整元数据信息
内容的提问来源于stack exchange,提问作者Shivam Sahil
相关产品推荐
相关产品推荐

