Red de conocimiento informático - Problemas con los teléfonos móviles - Interpretación del principio del token

Interpretación del principio del token

En el artículo anterior conocimos el origen, función y principio de las cookies y las sesiones. Aunque los dos han estado en servicio durante mucho tiempo en la historia, no importa qué tecnología sean, habrá otras superiores para reemplazarlos.

Como se mencionó anteriormente, debido a que las cookies se almacenan en el lado del cliente, existen riesgos de seguridad, por lo que las sesiones nacieron en el lado del servidor, lo cual es relativamente más seguro. Sin embargo, cada sesión debe abrir un espacio para que el usuario verifique su identidad, y el servidor debe realizar solicitudes de verificación cada vez que el navegador lo solicita, lo que consume espacio y rendimiento del servidor.

Como resultado nació otra herramienta de verificación de identidad, que es el token.

Es esencialmente una herramienta para la autenticación de usuarios. Sin embargo, a diferencia de las formas de cookies y sesiones similares a texto sin formato, los tokens se cifran mediante una serie de métodos de cifrado y finalmente aparecen como una cadena de cadenas "sin sentido". Pero contiene mucha información, que puede incluir la dirección del terminal donde el usuario inicia sesión, el ID de identidad del usuario, una marca de tiempo y una firma. La llamada firma significa que el remitente de la información firma la información para que el receptor de la información sepa a quién pertenece el token de solicitud. Puede entenderse como una doble autenticación de firmar su documento de identidad y escribir a mano en el documento de identidad.

Para evitar los ataques CSRF anteriores, los navegadores imponen restricciones en el acceso a los recursos web. La solicitud de URL debe provenir del mismo protocolo, nombre de dominio y puerto que la página antes de que se conceda el permiso de acceso. De esta forma, se considera que los tres sitios idénticos tienen la misma "fuente" y son un "dominio" independiente. Incluso si "localhost" e "ip" apuntan a la máquina local, se considerarán fuentes no originales. El navegador no ejecutará scripts de otros "dominios" bajo un determinado "dominio". Por lo tanto, esto también dio lugar a un tema importante en el campo front-end: el dominio cruzado.

La generación de sesión proviene de un objeto de sesión generado por el servidor después de que el usuario inicia sesión, que se guarda en el lado del servidor. Esta sesión solo es aplicable a este "dominio". Pero la situación real es que, en la mayoría de los casos, las solicitudes de un sitio web cruzarán dominios. Los puertos de cada servidor son diferentes, e incluso los nombres de dominio son diferentes. Cada vez que cruzan dominios, se formará una nueva sesión. generado. Esto afecta mucho la experiencia del usuario, por lo que existen muchas soluciones para guardar, compartir o almacenar sesiones de forma centralizada.

Pero las dos limitaciones anteriores ya no son un problema aquí.

Similar a las cookies.

Primero, el usuario ingresa la contraseña de la cuenta e inicia una solicitud de inicio de sesión. El servidor verifica la validez de la contraseña de la cuenta y devuelve un token al cliente si tiene éxito.

Después de recibir la respuesta, el cliente obtiene el token y lo guarda a través del almacenamiento local como localStorage.

Cuando el navegador vuelve a solicitar, debe agregar un token al encabezado de la solicitud, para que el servidor pueda identificar si la identidad de la solicitud es legal después de recibir la solicitud y devolver datos de respuesta si es legal. .

En aplicaciones reales, será muy conveniente usarlo con el interceptor de solicitudes de axios:

De esta manera, no es necesario agregar manualmente el token para cada solicitud. axios nos ayudará automáticamente a completar la suma, muy conveniente.

De hecho, los programadores front-end no están muy involucrados con los tokens. Solo necesitan llevar tokens en solicitudes que requieren autorización. La generación y el cifrado de tokens están a cargo del backend. Por lo tanto, no entraré en detalles sobre el principio de cifrado del token aquí. Es difícil para el autor describirlo claramente.

El uso del token no es tan simple como se describe anteriormente e implica algunas operaciones como el procesamiento de vencimiento y la actualización. Hablaremos de esto en detalle más adelante cuando tengamos la oportunidad.