Introduccion
Por ejemplo: si quieres ir al parque, este token es equivalente a un boleto, solo puedes ingresar con este boleto
Generalmente se usa en desarrollo front-end y back-end
Una cadena encriptada, que se puede descompilar
- Descompilar es descifrar después del cifrado
- Es solo que se necesita una llave para desbloquearlo.
Proceso de ejecución
- Después de que el usuario inicia sesión, el servidor generará un token. Y devuelve el token al frente
- Una vez que el front end obtiene el token, lo guarda.
- Al llamar a una interfaz sensible, debe pasar el token.
- El servidor verificará el token.
¿Qué se almacena?
Generalmente almacena información personal, tiempo de vencimiento
- Cuando vuelva a acceder a la interfaz más sensible, entregue el token al servidor y el servidor lo analizará. Después del análisis, puede obtener la información personal y el tiempo de vencimiento en el token
- El front-end no puede obtener información personal y tiempo de vencimiento, el front-end solo puede obtener un token, no puede analizar este token, solo el lado del servidor puede.
- ¿Por qué no puede el front end? Debido a que no hay ningún secreto en el front-end, como ese tipo de algoritmo más complicado no se colocará en el front-end, porque se puede ver el código fuente del front-end con clic derecho
- Cada vez que un usuario inicia sesión, se genera un nuevo token
El proceso específico de verificación.
- Verifique que el token sea correcto
- Correcto
Verifique que el token haya expirado.
1. Caducado: devuelva la información caducada al front end. El extremo frontal le permite salir automáticamente
2. No caducado: continuar la ejecución. - Incorrecto Se devuelve una excepción. La parte frontal le permite salir automáticamente.
- Correcto
Generación y uso de tokens
- Descargue el token web JWT – JSON del módulo
- En el lado del servidor
- Por ejemplo, donde escribe la interfaz de fondo, descárguela desde la misma dirección
- cnpm install jwt-simple -S
- Introducir
const jwt = require("jwt-simple");
- Generar
jwt.encode(payload,key); //第一个参数是你要荷载的内容 payload
- Generalmente contiene información personal y tiempo de vencimiento
const key = "sadawidha9dahd"
const token = jwt.encode({
admin:"zhangsan", //个人信息
createTime:Data.now() //生成时间
}
,key);
- Analizando
jwt.decode(token,key); //
const info = jwt.decode(token,key); //这个 info 就是你解析的内容,内容就是你荷载的信息
- Se usa cuando se llama a una interfaz privada.
Cómo determinar si el token ha expirado
- De analizar este lugar
- Al generar, generamos un tiempo
- Luego lo uso para generar información de tiempo.
- Ahora que conoce el tiempo de generación, compárelo con el tiempo actual
- Tiempo actual-createTime = intervalo de tiempo
const info = jwt.decode(token,key); //这个 info 就是你解析的内容,内容就是你荷载的信息
const nowTime= Date.now(); //当前时间
if((nowTime-info.createTime) > 100*60*1000){
console.log("过期啦")
}else{
console.log("正常")