Estoy usando Ruby on Rails 3 y me gustaría usar el método cookies.signed
en un middleware Rack. Lo necesito porque me gustaría autenticar a un usuario directamente en el middleware que usar un before_filter
en el archivo application_controller.rb
.¿Cómo usar las cookies en un middleware Rack?
Por ejemplo, si uso ese método en un controlador de esta manera:
cookies.signed[:user_id']
llego
---
- 1 # This is the id of the current signed in user
- a64ee3asdtjhcc7b35fcb280956be00ba27f94d48dfe4291c06db7d57577d5893 # This is the cookie salt
pero si uso que en un middleware Rack (de la misma aplicación) esta manera:
request = Rack::Request.new(env)
request.cookies.signed[:user_id']
consigo
NoMethodError
undefined method `signed' for #<Hash:0x00000103333d40>
Entonces, ¿cómo puedo hacer posible usar ese método en un middleware? ¿Cómo puedo obtener la identificación de usuario para que pueda autenticar eso?
Tal vez tengo que incluir \ extenderse, por ejemplo, la ActionDispatch ... si es así, ¿cómo?
Esto me señaló en la dirección correcta, pero todavía planteado la misma error (usando Rails 4.2.7). El problema era la falta de secretos de la aplicación en el 'env'. Reemplazando la primera línea con lo siguiente funcionó: 'ActionDispatch :: Request.new (Rails.application.env_config.merge (env))'. – jeffcarbs