不忘初心,砥砺前行
作者 | 陌无崖
转载请联系授权
在前面的文章中我们了解到的都是关于web请求,但是实际上,在发送web请求的时候,我们需要对我们的客户端进行授权访问,来保证对方是来自可信的客户端,因此在后端中会有Auth授权,让我们简单了解一下如何授权的吧。
用户请求登录 服务器进行验证 验证通过进行授权,返回令牌 用户携带令牌访问其他页面,直接验证通过。
jwt总共由三个部分进行组成,分别是Header(头部)、Payload(负载)、Signature(签名),其中Header是一个JSON对象,用来描述JWT的元数据
{
"alg": "HS256",
"typ": "JWT"
}
Payload同样是一个json对象,用来存放需要传送的数据
iss (issuer):签发人
exp (expiration time):过期时间
sub (subject):主题
aud (audience):受众
nbf (Not Before):生效时间
iat (Issued At):签发时间
jti (JWT ID):编号
还有一个最重要的就是我们的签名了。为了防止数据被修改,首先我们需要指定一个密钥,这个密钥只有服务器知道,并不对外做任何泄露。然后用指定的算法去生成签名,然后把 Header、Payload、Signature 三个部分拼成一个字符串,每个部分之间用"点"(.)分隔,就可以返回给用户。
我们可以将返回的签名放在cookie中,又或者放在redis中进行保存。但是由于放在Cookie中不能进行跨域,因此一般发送HTTP请求,保存在头信息Authorization字段里面。并加上Bearer标注:
fetch('api/user/1', {
headers: {
'Authorization': 'Bearer ' + token
}
})
END