Learn-json-web-tokens: Almacenamiento web y mejora progresiva

Creado en 15 oct. 2015  ·  9Comentarios  ·  Fuente: dwyl/learn-json-web-tokens

En el n. ° 5, n. ° 46 y en la mayoría de las discusiones en línea, las personas parecen utilizar de forma predeterminada el almacenamiento local / almacenamiento de sesiones para los JWT, en lugar de una cookie. Esto requiere el uso de AJAX en toda la aplicación para que el encabezado se pueda configurar desde el almacenamiento web cada vez. Tengo entendido que esto para evitar falsificaciones de solicitudes entre sitios (y esencialmente está aprovechando la política del mismo origen para hacer esto).

¿Cómo encaja esto con la mejora progresiva, donde algunos dispositivos no admitirán javascript en absoluto?

enhancement question

Comentario más útil

No necesariamente, aunque esto depende de su conjunto de herramientas. Angular, por ejemplo, le permite configurar esto una vez ... creo que incluso puede hacerlo con jquery fácilmente.

$.ajaxSetup({
   headers: { 'x-my-custom-header': 'some value' }
});

Otro problema con las cookies como capa de transporte para tokens es que está usando 2 tiempos de espera y no obtiene el beneficio de evitar los problemas de CORS. Las cookies complican el acceso a los servicios web RESTful. Es mucho más fácil construir un rizo de una línea para acceder a un recurso con un token que empaquetar una cookie.

Todos 9 comentarios

_Otra_ _GREAT _ Pregunta del _Mago_! : +1:
Para los propósitos de este microejemplo, creo que es "_Ok_" usar localStorage .
Seamos honestos, _todo el mundo_ está usando React en estos días sin tener en cuenta la accesibilidad.
Todos los chicos geniales están _mucho_ más interesados ​​en _Shiny New Frameworks_ que en _Progressive Enhancement _...

Sin embargo...
En nuestra aplicación _actual_ usamos cookies _precisely_ para compatibilidad con versiones anteriores y mejora progresiva.
Es por eso que agregamos la opción a JWT2 ... ver: https://github.com/dwyl/hapi-auth-jwt2#want -to-senttore-your-jwt-in-a-cookie

Entonces, en conclusión: agregaría localStorage al ejemplo en este repositorio y agregaría un comment informando a las personas que el uso de cookies para almacenar JWT es "_Ohkay_" porque aún obtienes toda la _ escalabilidad horizontal_ y la seguridad. Beneficios de usar JWT mientras se ahorra _esfuerzo_ de tener que configurar / obtener el JWT y agregarlo a los encabezados en cada solicitud ...

@rjmk y @nelsonic

¿Existe una razón específica por la que el JWTS almacenado en el almacenamiento local debe enviarse en los encabezados o hay algo vulnerable / "incorrecto" en el uso de https://www.npmjs.com/package/node-localstorage?

@Jbarget ¿estás construyendo un "_Universal_" que requiere que tengas acceso a localStorage en el servidor? Si ese es su caso de uso, entonces el módulo node-localstorage cumplirá su propósito.
_Sin embargo_ todavía tendrás que _manualmente_ enviar el JWT en el header para enviarlo de vuelta al servidor en solicitudes "AJAX" ... así que no hay mucha ventaja en usar un _módulo_ si todo lo que quieres hacer es obtener / establecer el token a / desde localStorage ...

@nelsonic probablemente

@Jbarget , ¿tiene una _objeción_ para almacenar el JWT en una cookie? (_ simplifica tu vida ..._)

@nelsonic sin objeciones, ¿

Simplifica su aplicación porque una vez que el servidor _establece_ la cookie, _todas_ las solicitudes enviadas / recibidas siempre contendrán la cookie. lo que significa que _nunca_ necesitas _pensar_ en ello después de ese punto.
Por el contrario, almacenar el JWT en localStorage significa que no puede tener una interacción que no sea ajax y debe recordar SET el encabezado auth para cada solicitud que realice al servidor. .

No necesariamente, aunque esto depende de su conjunto de herramientas. Angular, por ejemplo, le permite configurar esto una vez ... creo que incluso puede hacerlo con jquery fácilmente.

$.ajaxSetup({
   headers: { 'x-my-custom-header': 'some value' }
});

Otro problema con las cookies como capa de transporte para tokens es que está usando 2 tiempos de espera y no obtiene el beneficio de evitar los problemas de CORS. Las cookies complican el acceso a los servicios web RESTful. Es mucho más fácil construir un rizo de una línea para acceder a un recurso con un token que empaquetar una cookie.

Este problema se cierra automáticamente porque tiene más de un año. No dude en volver a abrirlo si aún es relevante para su proyecto.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

alanshaw picture alanshaw  ·  6Comentarios

NE-SmallTown picture NE-SmallTown  ·  5Comentarios

nelsonic picture nelsonic  ·  4Comentarios

joepie91 picture joepie91  ·  18Comentarios

sarneeh picture sarneeh  ·  3Comentarios