前言:很多時候我們需要對數(shù)據(jù)進行加密解密,比如解析token等? 這個時候我們就需要對其進行數(shù)據(jù)操作,而不同平臺的加密解密方法也是不一樣的,這里我做一下記錄。
我們先來了解一下?jwt 全稱是JSON WEB TOKEN?
JWT是用于用戶與服務器之間身份認證的密碼。 這個“密碼”的作用簡單來說就是一個:就是告訴服務器當前用戶是誰。
用戶登錄后,服務端根據(jù)一定的規(guī)則,生成TOKEN。后續(xù)用戶在每次請求時,將TOKEN攜帶上一起發(fā)送給服務器。
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
根據(jù)自己的規(guī)則算法生成的一串例如這樣的字符串
= = = = = = = = = = = = = = = = = = = = = = = 分割 = = = = = = = = = = = = =?= = = = = = = = = =?
接下來就是不同端對于token的解析
h5 pc
let token = res.data.token.split('.')
// 通過split()方法將token轉(zhuǎn)為字符串數(shù)組
// 這樣得到的長度為3的數(shù)組 分別就是 header、payload 以及signature
// 我們可以通過訪問數(shù)組下標的方式拿到主要存數(shù)據(jù)的payload 再進行解析 -----
// 格式化數(shù)據(jù)
token = token[1].replace(/-/g, "+").replace(/_/g, "/")
let userinfo = JSON.parse(decodeURIComponent(escape(window.atob(token))));
// 這樣就能到到我們需要的信息的json數(shù)據(jù)
在h5 pc我們能用到window? 但在小程序里沒有這玩意 這個時候atob() 這個方法就不適用了
就需要用到其他的方法?文章來源:http://www.zghlxwxcb.cn/news/detail-491156.html
微信小程序
// 進行分割+格式化
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)
原創(chuàng)碼字不易,如果你覺得對你有幫助的好勞煩你動動你的小手點個贊,當然關注收藏三連就更好了!?。_^!文章來源地址http://www.zghlxwxcb.cn/news/detail-491156.html
到了這里,關于小程序、pc、h5端token的jwt解密解碼(base64)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!