node.js - example - ¿Cuál es la diferencia entre middleware ''session'' y ''cookieSession'' en Connect/Express?
node js express-session example (2)
Ambos middlewares hacen uso de cookies del lado del cliente para mantener el contexto del usuario, es decir, Session . La diferencia radica en:
- Lo que se almacena en las cookies, y
- Si se necesita una tienda del lado del servidor
La siguiente tabla compara el cookieSession y las session :
+----------------+-----------------------+----------------------+
| | Client-side store | Server-side store |
| | (cookie) | (in-memory, db ..) |
+----------------+-----------------------+----------------------+
| Middleware | Used? | Content | Used? | Content |
+----------------+--------+--------------+-------+--------------+
| session | Yes | Session ID | Yes | Session data |
+----------------+--------+--------------+-------+--------------+
| cookie-session | Yes | Session data | No | N/A |
+----------------+--------+--------------+-------+--------------+
cookieSession es más simple ya que no requiere ninguna tienda adicional del lado del servidor, es decir, el servidor permanece completamente sin estado. session requiere una tienda del lado del servidor. Una limitación obvia de la tienda de sesión basada en memoria predeterminada es que no funciona cuando hay varias instancias de un servidor; en tales casos será necesario un almacenamiento compartido alternativo (por ejemplo, una base de datos), lo que lo hace relativamente complejo. Sin embargo, en general, el middleware de sesión se usa más comúnmente ya que es más flexible (para almacenar datos confidenciales, o cargas útiles más grandes, etc.).
Hay dos middlewares relacionados con la sesión incluidos con Connect / Express. ¿Cuál es la diferencia? ¿Cómo elijo?
Supongo que el middleware de session es el mismo que el middleware cookieSession , pero con un mecanismo de almacenamiento adicional.
El middleware de sesión implementa la funcionalidad de sesión genérica con almacenamiento en memoria de forma predeterminada. Sin embargo, le permite especificar otros formatos de almacenamiento.
El cookieSession , por otro lado, implementa almacenamiento respaldado por cookies (es decir, toda la sesión se serializa a la cookie, en lugar de solo una clave de sesión. En realidad, solo debería usarse cuando los datos de la sesión se mantendrán relativamente pequeños.