现在,公司内部跨部门的合作很常见,数据接口的调用也就很频繁。本文使用比较新的 JWT 实现,采用 HS256 的算法来加/解密,达到内部的隐藏数据对接。
安装 gem 包, https://github.com/jwt/ruby-jwt
gem install jwt
命令行测试 irb
:
> require 'jwt'
# Expiration Time Claim
# 不超过 60s
> secret = "IamAsecret" # 内部密码
> exp_payload = { :data => 'data', :exp => Time.now.to_i +60 }
# 生成token
> token = JWT.encode exp_payload, secret, 'HS256'
# 解码
> decoded_token = JWT.decode token, secret, true, { :algorithm => 'HS256' }
如果解码失败,可能会返回:
1. JWT::ExpiredSignature: Signature has expired 超过60s
2. JWT::VerificationError: Signature verification raised 验证不通过
安装包, https://github.com/jpadilla/pyjwt
pip install PyJWT
命令行测试 python
:
> import jwt
> import time
> secret = "IamAsecret"
> exp_payload = {'data': 'data', 'exp': int(time.time()) + 60}
> token = jwt.encode(exp_payload, secret, algorithm='HS256')
> d = jwt.decode(token, secret, algorithms=['HS256'])
# 可能需要转码
> d['data'].encode('ascii')
# => 'data'
可能会有错误:
1. jwt.exceptions.ExpiredSignatureError: Signature has expired
2. jwt.exceptions.DecodeError: Signature verification failed
网易云大礼包:https://www.163yun.com/gift
本文来自网易实践者社区,经作者刘朝敏授权发布