在这篇文章中,我们将讨论有关jwt-web-token。
简介
JWT是一种紧凑的URL安全手段,代表了两方之间的主张。它允许您将信息安全地在客户端和服务器之间作为JSON对象进行。 JWT通常用于身份验证和授权目的。
更好地了解JWT我建议您了解HTTP的工作原理和HTTP的结构。
JWT的主要部分要理解。
JWT有两个主要部分要理解。
- 标志()
- 验证()。
符号()
jwt.sign()用于在服务器中生成令牌。它接受两个参数。
jwt.sign(有效载荷,secret_key)。
令牌不过是由符号函数生成的长哈希字符串。该字符串由DOT分隔的三个部分组成[。]
{ headers.payload.secretket}
为了更好地理解上述字符串,请参阅以下代码,然后阅读说明。
const payload = { userId: 1234, username: 'john' };
const secretKey = 'your-secret-key';
const token = jwt.sign(payload, secretKey);
在上面的代码有效载荷中是一个对象,包括用户和用户名的ID。
您还可以在有效载荷中发送角色和权限对象以实现RBAC。
secret-key 是一个长长的复杂字符串,该字符串秘密保存在服务器中,只有该服务器已知。
jwt.sign()函数将与req.headers一起接受这些参数,并将数据放入字符串中。如下
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6I
kpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
SRTRING将由服务器返回并保存在浏览器的本地。稍后在登录服务器中将获得该字符串验证字符串,如果字符串有效,请允许用户登录应用程序。
核实()
通过jwt.verify()函数来验证客户收到的令牌的过程。语法如下
jwt.verify(token,secret_key,(err,decode))
重要的是要了解令牌来自客户端又称浏览器本地存储,秘密键来自服务器,它返回回调,包括err或解码有效载荷。
这项工作是如何获得令牌,其中包括 headers.payload.sercert_key 。
如果Hashed秘密密钥等于服务器中存在的密钥,则将对其进行身份验证。