21xrx.com
2024-12-28 12:17:22 Saturday
登录
文章检索 我的文章 写文章
Node.js 实现 JWT(JSON Web Token)
2023-06-30 22:12:45 深夜i     --     --
Node js JWT JSON Web Token Authentication

什么是 JWT?

JWT 全称为 JSON Web Token,是一种开放标准(RFC 7519),用于在网络应用之间传递信息的简洁、安全和可靠的方式。JWT 通常用于身份验证和授权,是目前最流行的身份验证解决方案之一。

JWT 的结构

JWT 由三个部分组成:头部(Header)、载荷(Payload)和签名(Signature)。其中头部和载荷均为 JSON 字符串,签名则为头部加上载荷后进行加密得到的字符串。

头部:通常包含两部分信息,分别是 token 类型和所使用的加密算法。例如:

  "alg": "HS256"

载荷:通常包含一些声明和用户信息,例如:

 "name": "John Doe"

签名:使用头部中声明的加密算法对头部和载荷进行加密得到的字符串,例如:

HMACSHA256(

 base64UrlEncode(header) + "." +

 base64UrlEncode(payload),

 secret)

如何使用 Node.js 实现 JWT?

Node.js 中有很多第三方库可以用于生成和验证 JWT。例如,jsonwebtoken 就是一个非常流行的 Node.js 库,可以用于生成和验证 JWT。下面是一个使用 jsonwebtoken 库生成 JWT 的示例代码:

const jwt = require('jsonwebtoken');

const payload = { user: 'admin' };

const secret = 'mysupersecretpassword';

const token = jwt.sign(payload, secret, { expiresIn: '1h' });

上面代码中,我们使用 jwt.sign 方法生成 JWT,第一个参数是 payload,即载荷;第二个参数是 secret,即密钥;第三个参数是 options,可以设置 JWT 的过期时间等信息。

下面是一个使用 jsonwebtoken 库验证 JWT 的示例代码:

const jwt = require('jsonwebtoken');

const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiYWRtaW4iLCJpYXQiOjE1OTkyODM2NTl9.Mo6D__s-teMyxCg0dRJvqRSKiwJ9h2L8Jqbu5a1Gkg8';

const secret = 'mysupersecretpassword';

jwt.verify(token, secret, function(err, decoded) {

 if (err) {

  console.log('验证失败');

 } else {

  console.log(decoded);

 }

});

上面代码中,我们使用 jwt.verify 方法验证 JWT,第一个参数是 token,即待验证的 JWT;第二个参数是 secret,即密钥;第三个参数是回调函数,可以获取解密后的 payload 信息。

总结

JWT 是一种简洁、安全和可靠的身份验证和授权解决方案,可以在网络应用之间安全地传递信息。Node.js 中有很多第三方库可以用于生成和验证 JWT,使用起来非常方便。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复