base64编码
效果:使用64个可打印的字符来表示二进制数据的方法。
A-Z a-z 0-9 + /
一共64个字符,本质上是进行表示,并不是加密(但如果打乱字符顺序,也可以达到加密的效果)
具体原理见博客:[一篇文章弄懂Base64编码原理_mijichui2153的博客-CSDN博客]()
base64Url编码
base64编码将’+’、’/‘替换成’-’、’_’,将=去掉,就成为了base64url编码,因为这三个字符在url有特殊意义。
JWT
json web token
JWT是一种用户认证方案,用于保持登录等。
-
用户进行登录,用户名和密码传给后端
-
后端对header和payload进行base64Url编码,再用字符 ‘.’ 进行连接
-
配置一个密钥(只有后端持有),对编码后的串进行签名,得到一个token字符串
-
将token字符串传给客户端
-
之后每次客户端发起有权限限制的请求时,都在请求头中的authorization中携带这个token字符串(记得前面加上Bearer + 空格)
-
后端每次拿到请求,先检查(当然是用之前那个密钥进行解密)这个token是否过期,是否正确,通过后再进行其他响应
jwt的header中:
-
'alg':'HS256'
-
'typ': 'JWT'
表示所用的签名算法,以及令牌(token)类型,token也分类型的,这里的类型是jwt令牌
payload:
payload就是传输的具体内容,默认不加密,所以敏感的内容,比如密码,不加密的情况下就不要往里放。
参考阮一峰先生的博客:JSON Web Token 入门教程