Usa ambos. Solo tome algunas medidas para evitar el robo de identidad.
Está bien, pero hablemos de cómo hacerlo.
JWT no reemplaza a las cookies. No podría ser, ya que tienen propósitos diferentes.
En una aplicación web (por ejemplo, no en una api ), las cookies siguen siendo las más seguras y mejores para el transporte de credenciales a través de HTTPS. De hecho, hay al menos otra forma establecida de almacenar credenciales. Es el encabezado de autorización HTTP. El problema con los encabezados de autorización en una aplicación web es que estarán disponibles para las secuencias de comandos del lado del cliente, y cuando se requiera una sesión a largo plazo, tendremos que almacenar las credenciales en algún lugar. No hay una forma segura de hacerlo en los navegadores. Por lo tanto, los encabezados de autorización se utilizan mejor en las API que se consumen en el lado del servidor.
Tradicionalmente, una cookie de sesión solo almacena un puntero a los datos almacenados en otro lugar . Un servidor tendría que descodificar la cookie y luego recuperar los datos a los que apunta. Para sistemas grandes, se utiliza una base de datos de caché o de sesión para evitar vincular al usuario con un solo servidor. Ahora entra en JWT.
JWT es un formato de mensaje que puede contener toda la información que el servidor necesita para procesar las solicitudes, como identificar al usuario. Guarda el servidor de realizar una solicitud para obtener más datos. La carga útil completa se firma y se envía junto con el mensaje para confirmar que es válida. No es un hash ni es un secreto, por lo que no debe ingresar información confidencial . Ahora, todavía necesitamos un medio para transportar el JWT entre el servidor y amp; navegador. Una cookie Segura , HttpOnly se ajusta como un guante.
Los sistemas más grandes se benefician de JWT porque cualquier servidor podría atender una solicitud , a diferencia de una cookie de sesión generalmente (a menos que se indique anteriormente) vinculada a un solo servidor.
Hay otros pros & En contra de cada uno como lo dijo Anders en su respuesta, no lo repetiré por completo.