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

如何在Ruby中使用JWT Token提取用户ID、用户名等用户信息

Ruby 从JWT Token中提取用户信息的实现方法

首先你需要安装Ruby生态中最常用的JWT处理库ruby-jwt:

  • 直接安装执行命令:gem install jwt
  • 如果你在Rails项目中使用,在Gemfile中添加如下内容后执行bundle install即可:
gem 'jwt'

与你原有Django verify=False 逻辑等价的实现(不验证签名直接解码)

对应你给出的Python代码逻辑,不需要验证签名直接提取payload字段的写法如下:

require 'jwt'

def get_user_id_from_token(token)
  # 参数说明:第四个参数指定加密算法,第三个参数false代表不验证签名
  decoded_payload = JWT.decode(token, nil, false, algorithm: 'HS256')[0]
  # 直接取payload中对应的字段即可,要用户名就取decoded_payload['username']
  decoded_payload['user_id']
end

注意:不验证签名的方式存在安全风险,仅适合本地调试、你已经在网关等上游环节完成签名校验的场景使用。


生产环境推荐实现(验证签名)

正常业务场景建议开启签名校验,避免伪造的Token被解析,写法如下:

require 'jwt'

# 替换为你签发JWT时使用的HS256加密密钥
JWT_SIGN_SECRET = '你的实际签名密钥'

def get_user_info_from_token(token)
  begin
    decoded_payload = JWT.decode(token, JWT_SIGN_SECRET, true, algorithm: 'HS256')[0]
    # 按需返回你需要的用户字段
    {
      user_id: decoded_payload['user_id'],
      username: decoded_payload['username']
    }
  rescue JWT::VerificationError, JWT::ExpiredSignature, JWT::DecodeError
    # 捕获签名错误、Token过期、解码失败等异常,按需做业务处理
    nil
  end
end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:36:03