Node 生成 JWT Token的使用方法

Token 是什么

Token 本质就是是字符串,用于请求时附带在请求头中,校验请求是否合法及判断用户的身份。

Token 与 Session、Cookie 的区别

  • Session 保存在服务端,用于客户端与服务端连接时,临时保存用户信息,当用户释放连接后,Session 将被释放;
  • Cookie 保存在客户端,当客户端发起请求时,Cookie 会附带在 http header 中,提供给服务端辨识用户身份;
  • Token 请求时提供,用于校验用户是否具备访问接口的权限。

Token 的用途

Token 的用途主要有三点:

  • 拦截无效请求,降低服务器处理压力;
  • 实现第三方 API 授权,无需每次都输入用户名密码鉴权;
  • 身份校验,防止 CSRF 攻击。

JWT 简析

官方地址:https://jwt.io/

JWT由三部分组成:
在这里插入图片描述
其中第一部份header为头部:
在这里插入图片描述
alg为加密的算法 通常直接使用 HMAC SHA256。其它的算法还有在这里插入图片描述
typ为声明的类型。

第二部份payload也就是存放数据的地方,也可以说是存放有效信息的地方。
在这里插入图片描述
其中sub为jwt所面向的用户,
name可以说是一个名字,
jwt就是签发的时间。

第三部份是一个签证信息,这个签证信息由三部分组成:
在这里插入图片描述
分别由base64加密后的header和base64加密后的payload使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分。

生成签名时需要使用密钥,密钥只保存在服务端,不能向用户公开,尤其重要,它是一个字符串,我们可以自由设定。
在这里插入图片描述

使用方法

  1. 安装 jsonwebtoken
npm i -S jsonwebtoken
  1. 使用
#生成一个token
const jwt = require('jsonwebtoken')

const token = jwt.sign(
        { username },   //payload,可以根据需求进行写入
        'PRIVATE_KEY',		//自定义的一个密钥
        { expiresIn: JWT_EXPIRED } // 过期时间
      )

如果您也正在学习前端的路上,记得关注该博主,学习更多关于前端的知识~

博主主页 Poetic Code

发布了58 篇原创文章 · 获赞 408 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/weixin_44253336/article/details/105321448