前端项目经验 —— 前端使用 jsrsasign 库生成 JWT 令牌的方案

安装jsrsasign库

npm install jsrsasign

生成JWT令牌

生成JWT令牌是通过使用 jsrsasign 库中的一个方法:

jsrsasign.jws.JWS.sign(alg, header, payload, "key-word")

需要传入四个参数:

alg

一般是与后端约定好一个算法

以下是一些常见的 alg 参数值和它们对应的加密算法:

RS256:使用RSA算法和SHA-256哈希算法进行数字签名。

RS384:使用RSA算法和SHA-384哈希算法进行数字签名。

RS512:使用RSA算法和SHA-512哈希算法进行数字签名。

HS256:使用HMAC算法和SHA-256哈希算法进行加密。

HS384:使用HMAC算法和SHA-384哈希算法进行加密。

HS512:使用HMAC算法和SHA-512哈希算法进行加密。

ES256:使用椭圆曲线数字签名算法 (ECDSA) 和SHA-256哈希算法进行数字签名。

ES384:使用椭圆曲线数字签名算法 (ECDSA) 和SHA-384哈希算法进行数字签名。

ES512:使用椭圆曲线数字签名算法 (ECDSA) 和SHA-512哈希算法进行数字签名。
header

要签名的头部,通常是一个 JSON 字符串。它包含有关签名的元数据和算法等信息,例:

// alg是算法,如果在签名的头部中设置,则不用在第一个参数设置,但是要传入null
// typ是令牌的类型
const header = { alg: "HS256", typ: "JWT" };
payload

要签名的有效载荷,通常是一个 JSON 字符串。它包含了要传输或保存的实际数据,例:

// 设置JWT有效载荷
const payload = {
  uid: "", // 用户Id
  exp: Math.floor(Date.now() / 1000) + 600, // 过期时间(当前时间戳加10分钟)
};

 一般有更多要加密的值,这里只是举例说明

 key-word

与后端约定好的私钥,这是非常重要的一个值,生成的token如果没有这个私钥,是无法解密的,一般是一个字符串。

全部示例:

代码
<script>
import jsrsasign from "jsrsasign";

// 设置头部信息
const header = { alg: "HS256", typ: "JWT" };

// 设置JWT有效载荷
const payload = {
  uid: "", // 用户Id
  exp: Math.floor(Date.now() / 1000) + 600, // 过期时间(当前时间戳加10分钟)
};

let token = jsrsasign.jws.JWS.sign(
  "HS256",
  JSON.stringify(header),
  JSON.stringify(payload),
  "key-word"
);

console.log(token);
</script>
打印的结果

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值