tutorial software rails ejemplos descargar curso caracteristicas ruby-on-rails

ruby-on-rails - software - ruby on rails tutorial



Adición de la tienda de sesión de cookies de nuevo a la aplicación API Rails (3)

Debe eliminar estas declaraciones de middleware de su archivo application.rb y agregar esto:

config.api_only = false

Esto habilitará la administración de la sesión de la forma que desee si hay un session_store configurado en algún lugar de sus inicializadores (que tiene). Esto no está claramente documentado, pero eso es lo que se supone que debes hacer .

Ejemplo here .

Tengo una aplicación Rails-API. Más o menos "listo para usar" pero quiero volver a agregar el almacén de sesiones basado en cookies. Esto es lo que he hecho:

app / controllers / application_controller.rb

+ include ::ActionController::Cookies

config / application.rb

+ config.middleware.insert_after ActiveRecord::QueryCache, ActionDispatch::Cookies + config.middleware.insert_after ActionDispatch::Cookies, ActionDispatch::Session::CookieStore

config config / initializers / secret_token.rb

+ Namespace::Application.config.secret_token = ''token''

config config / initializers / session_store.rb

+ Namespace::Application.config.session_store :cookie_store, :key => ''_namespace_key''

Cuando inspecciono la sesión en un controlador resulta:

<Rack::Session::Abstract::SessionHash:0x3fdadc5daa24 not yet loaded>

Sin embargo, parece que los datos se escriben y se utilizan.

Pero, en mi navegador, la cookie en sí está siendo nombrada como ''_session_id'' en lugar de ''_namespace_key''

Pensé que volví a agregar todas las piezas necesarias para el almacenamiento de sesión basado en cookies, pero parece que me falta algo más. ¿Algunas ideas?


Esta línea se ignora porque no está utilizando la pila completa de Rails:

::Rails.application.config.session_store :cookie_store, :key => ''_namespace_key''

Entonces, en lugar de eso, su sesión está usando la clave de sesión predeterminada establecida aquí . Sin embargo, puede pasar estos argumentos directamente reemplazando:

config.middleware.insert_after ActionDispatch::Cookies, ActionDispatch::Session::CookieStore

con:

config.middleware.insert_after ActionDispatch::Cookies, ActionDispatch::Session::CookieStore, :key => ''_namespace_key''

Aquí hay una lista completa de opciones que puede pasar (con una idea aproximada de sus valores predeterminados, ya que algunas pueden ser anuladas por módulos en Rails).


Si está en Rails 5 y desea conservar config.api_only = true , podría ampliar el middleware para agregar la capa de sesiones, agregando este código después de la class Application < Rails::Application en config/application.rb

config.middleware.use ActionDispatch::Cookies config.middleware.use ActionDispatch::Session::CookieStore, key: ''_namespace_key''

Esto puede ser útil cuando desea tener una aplicación habilitada api-only para api-only Rails pero tiene que administrar sesiones de usuarios con un panel de administración como ActiveAdmin o Rails_Admin.