小程序、pc、h5端token的jwt解密解码(base64)

前言:很多时候我们需要对数据进行加密解密,比如解析token等  这个时候我们就需要对其进行数据操作,而不同平台的加密解密方法也是不一样的,这里我做一下记录。

我们先来了解一下 jwt 全称是JSON WEB TOKEN 

JWT是用于用户与服务器之间身份认证的密码。 这个“密码”的作用简单来说就是一个:就是告诉服务器当前用户是谁。

用户登录后,服务端根据一定的规则,生成TOKEN。后续用户在每次请求时,将TOKEN携带上一起发送给服务器。

JWT 一般由三部分构成 分别是header、payload以及signature

header: 一般是一些固定的信息

{
  'typ': 'JWT',    // 声明类型
  'alg': 'HS256'   // 声明加密的算法 通常是 SHA256 HMAC 
}

payload:信息的主要载体,也可以是空的,返回的一些个人信息一般也是放在这

{
  avatarUrl: "https://thirdwx.qlogo.cn/mmopen/vi_32/jLcwsTs1QkicaJnMGt2vP7LaXUtIq8Q7bsRWIk2jTetG3agwoRRDEFAHEIgibDR5IqrztukRYp9waWNX58SjujZQ/132"
  city: ""
  country: ""
  gender: 0
  language: "zh_CN"
  nickName: "Demons."
  province: ""
}

signature:服务器用于验证该请求的token是否合法

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

根据自己的规则算法生成的一串例如这样的字符串

= = = = = = = = = = = = = = = = = = = = = = = 分割 = = = = = = = = = = = = = = = = = = = = = = = 

接下来就是不同端对于token的解析

h5 pc

let token = res.data.token.split('.')
// 通过split()方法将token转为字符串数组
// 这样得到的长度为3的数组 分别就是 header、payload 以及signature
// 我们可以通过访问数组下标的方式拿到主要存数据的payload 再进行解析 -----

// 格式化数据
token = token[1].replace(/-/g, "+").replace(/_/g, "/")

let userinfo = JSON.parse(decodeURIComponent(escape(window.atob(token)))); 
// 这样就能到到我们需要的信息的json数据

在h5 pc我们能用到window  但在小程序里没有这玩意 这个时候atob() 这个方法就不适用了

就需要用到其他的方法 

微信小程序

// 进行分割+格式化
let token = res.data.token.split('.')
let userinfo = token[1].replace(/-/g, '+').replace(/_/g, '/')


// 解码base
let info = new Buffer(userinfo, 'base64').toString('utf8')

// 得到的这个info就是解析后的json对象
console.log("info》》》》》",info)

原创码字不易,如果你觉得对你有帮助的好劳烦你动动你的小手点个赞,当然关注收藏三连就更好了!!!^_^!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值