rubyonrails rails guide guias data book basics ruby-on-rails authentication devise

ruby-on-rails - guide - rubyonrails book



¿Cómo maneja Rails/Devise las sesiones de cookies? (1)

Me gustaría entender qué es lo que realmente sucede cuando se registra un usuario con rieles / dispositivos

He creado una aplicación de rieles mínimos, instalé un dispositivo y creé un modelo de dispositivo de User . Todo funciona bien, y cuando inicio sesión (con remember me ) obtengo una cookie de sesión tal como se esperaba.

Ahora, lo que me molesta es: ¿cómo manejan los rieles las informaciones de sesión que el navegador está pasando a través de la cookie?

Espero ingenuamente que alguna información se almacene en la base de datos, pero no veo dónde. No hay tal cosa como tabla de session , ninguna columna de sesión en Users , y no pude encontrar nada de interés en el directorio tmp .

Tenga en cuenta que reiniciar el servidor no mataría mi sesión. Por supuesto, se espera, pero ahora me pregunto qué tipo de magia está ocurriendo aquí.

en otras palabras: ¿cómo verifica el servidor la validez de una cookie para autenticar a un usuario?

Gracias !


El almacenamiento de sesión de rieles predeterminado es CookieStore. Esto significa que todos los datos de la sesión se almacenan en una cookie en lugar de en la base de datos en cualquier lugar. En Rails 3.2, la cookie está firmada para evitar la manipulación, pero no está encriptada. En Rails 4 generalmente se encripta por defecto. El hecho de que esté en una cookie es cómo persiste en los reinicios de su servidor. También significa que solo puede almacenar 4k de datos y no querría almacenar nada sensible allí en Rails <4. Es mejor mantener un mínimo de datos en la sesión de todos modos.

También puede optar por almacenar los datos de la sesión en la base de datos y tener solo un ID de sesión en una cookie.

Esta respuesta que di la semana pasada tiene información adicional que podría ser útil:

Las sesiones tuvieron sentido para mí antes de comenzar a leer sobre ellas en línea

Además, el api doc de Rails para CookieStore ofrece un buen resumen:

http://api.rubyonrails.org/classes/ActionDispatch/Session/CookieStore.html