El uso del mecanismo de autenticación JWT basado en express en nodejs, el uso del paquete jsonwebtoken y el middleware express-jwt, y el middleware de intercepción de tokens

1. Componentes de JWT

JWT通常由三部分组成,分别是 Header(头部)、Payload(有效荷载)、Signature(签名)。
    三者之间使用英文的“.”分隔,格式如下:
        Header.Payload.Signature

2. Los significados de las tres partes de JWT

    JWT的三个组成部分,从前到后分别是 Header、Payload、Signature。
        其中:
            Payload部分才是真正的用户信息,它是用户信息经过加密之后生成的字符串。
            Header和Signature是安全性相关的部分,只是为了保证Token的安全性。

3. Cómo usar JWT

    客户端收到服务器返回的JWT之后,通常会将它储存在localStorage或sessionStorage 中。
    此后,客户端每次与服务器通信,都要带上这个WT的字符串,从而进行身份认证。推荐的做法是把JWT放在HTTP请求头的Authorization字段中,格式如下:
        Authorization: Bearer <token>

Puntos clave a tener en cuenta: Al generar cadenas de Token, asegúrese de eliminar contraseñas y avatares que tengan riesgos de seguridad.
1. Ejecute el siguiente comando para instalar el paquete que genera cadenas de Token:

npm i jsonwebtoken@8.5.1

2. En el área de encabezado del módulo que envía el archivo token js, importe el paquete jsonwebtoken:

const jwt = require('jsonwebtoken')

3. Cree un archivo config.js y comparta la cadena jwtSecretKey de Tokens cifrados y restaurados
Después de la actualización de jwt el 7 de julio de 2020, el módulo express-jwt instalado tendrá la versión 6.0.0 de forma predeterminada, y el jwt actualizado debe ser en la configuración Agregue el atributo del algoritmo, es decir, configure el algoritmo de jwt. Generalmente, HS256 es el valor predeterminado para configurar algoritmos:

//我这里版本比较低不用配置algorithms
module.exports = {
    
    
  jwtSecretKey: 'itheima No1. ^_^',
}

4. Cifre el objeto de información del usuario en una cadena de Token

// 导入配置文件
const config = require('../config')

// 生成 Token 字符串
const tokenStr = jwt.sign(user, config.jwtSecretKey, {
    
    
  expiresIn: '10h', // token 有效期为 10 个小时
})

5. Responda a la cadena de Token generada al cliente

res.send({
    
    
  status: 0,
  message: '登录成功!',
  // 为了方便客户端使用 Token,在服务器端直接拼接上 Bearer 的前缀
  token: 'Bearer ' + tokenStr,
})
  1. Configurar middleware para analizar Token

1. Ejecute el siguiente comando para instalar el middleware para analizar el token:

npm i express-jwt@5.3.3

2. Antes de registrar la ruta en app.js, configure el middleware que analiza el token:

// 导入配置文件
const config = require('./config')

// 解析 token 的中间件
const expressJWT = require('express-jwt')

// 使用 .unless({ path: [/^\/api\//] }) 指定哪些接口不需要进行 Token 的身份认证
app.use(expressJWT({
    
     secret: config.jwtSecretKey }).unless({
    
     path: [/^\/api\//] }))

3. En el middleware de nivel de error en app.js, capture y procese el error después de que falle la autenticación del token.

// 错误中间件
app.use(function (err, req, res, next) {
    
    
  // 省略其它代码...

  // 捕获身份认证失败的错误
  if (err.name === 'UnauthorizedError') return res.cc('身份认证失败!')

  // 未知错误...
})

De esta manera, ha configurado con éxito la intercepción de token y verificación de token.
Si la autenticación es exitosa en la solicitud, puede usar req.user para obtener la información del usuario encapsulada en el token *

Supongo que te gusta

Origin blog.csdn.net/weixin_45822938/article/details/123256503
Recomendado
Clasificación