新年好~css
最近一直比较忙~新年第一篇文章来简单说下JWT
JWT(JSON Web Token)
是一个开放标准(RFC 7519),被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景。算法
一、受权,一旦用户登陆后,每一个后续的请求都会包含一个JWT
,能够用来验证用户的身份,以及对路由,服务和资源的访问。
二、信息交换:因为使用了标头和有效负载计算签名,能够确保发送者的数据是么有被伪造过的。json
JWT
使用'.'
分隔的三部分就像这样:xxxxx.yyyyy.zzzzz
结构就像这样api
head
部分通常是JWT
的声明类型和算法像这样:安全
{
"alg": "HS256",
"typ": "JWT"
}
复制代码
令牌的第二部分是有效负载,通常有三种类型:bash
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
复制代码
其中sub
指的是接收JWT
的一方,而后还会包含一些其余的信息:例如名称等等
签名:JWT
的最后一部分就是签名了,主要包括三部分:服务器
这三部分就是通过base64加密后的header
和payload
而后经过header
中的加密方式进行加盐secret
组合加密。
而后上面三部分其实就是下面这段字符串的组合微信
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
复制代码
用户经过登陆页,进行登陆。app
服务端经过登陆鉴权,若是用户合法,根据用户的信息和规划返回JWT
。分布式
把生成的Token
返回给用户。
4.用户在之后受保护的请求中,都会在请求头中加入Authorization: Bearer xxxx(token)
。
5.服务器端对此token
进行验证看是否合法,返回结果。
6.用户接收返回结果。
通常是在请求头中加入Authorization
,并加上Bearer
标注
fetch('api/getUser/1', {
headers: {
'Authorization': 'Bearer ' + token
}
})
复制代码
以上就是JWT
的简单使用了~