¿Alguien había instalado la gema Devise con Sinatra?Idear con Sinatra
Devise está basado en Warden y debería funcionar en Sinatra, no pude encontrar ninguna información relacionada sobre cómo implementarlo.
¿Alguien había instalado la gema Devise con Sinatra?Idear con Sinatra
Devise está basado en Warden y debería funcionar en Sinatra, no pude encontrar ninguna información relacionada sobre cómo implementarlo.
Diseñar es realmente envoltorio sólo un Rieles-céntrico con buenos ayudantes para warden, que es el marco de autenticación del estante subyacente . Entonces, si está utilizando Sinatra junto con Rails, puede usar Devise en su aplicación Rails, y usar warden directamente en su aplicación Sinatra, y ellos verán los mismos datos de sesión de usuario.
Así que no, no puedes usar Devise directamente en tu aplicación Sinatra, pero si estás construyendo una aplicación modular con algunas piezas en Rails y otras piezas en Sinatra, puedes usar Devise/Warden entre los componentes.
Devise está diseñado solo para rieles. No puedes usarlo con Sinatra.
Se puede extraer:
https://github.com/maxjustus/sinatra-authentication
http://www.gittr.com/index.php/archive/sinatra-basic-authentication-selectively-applied/
El segundo enlace ya no funciona. – zhon
También hay https://github.com/jsmestad/sinatra_warden disponible.
Pude hacerlo funcionar. Había unos pocos aspectos principales:
He aquí parte más relevante del código de /config.ru:
#
# ...
# Rest with Rails
map "/" do
run MyApp::Application
end
# Anything urls starting with /slim will go to Sinatra
map "/slim" do
# make sure :key and :secret be in-sync with initializers/secret_store.rb initializers/secret_token.rb
use Rack::Session::Cookie, :key => '<< see, initializers/secret_store.rb >>', :secret => '<< copy from initializers/secret_token.rb >>'
# Point Warden to the Sinatra App
use Warden::Manager do |manager|
manager.failure_app = AppMain
manager.default_scope = Devise.default_scope
end
# Borrowed from https://gist.github.com/217362
Warden::Manager.before_failure do |env, opts|
env['REQUEST_METHOD'] = "POST"
end
run AppMain
end
Consulte, http://labnote.beedesk.com/sinatra-warden-rails-devise para una solución completa.
Deberías haber desarrollado tu aplicación en Rails – AMBasra
@AMBasra, necesitaba un marco más simple para desarrollar una API CRUD, Sinatra parecía una herramienta del tamaño adecuado para las tareas. –
Quise decir que estás ejecutando el servidor Rails con tu aplicación. Entonces no es más ligero. ¿Por qué utilizar dos marcos si puede hacer todo en uno? El entorno de producción también estaría ejecutando tanto rieles como sinatra. – AMBasra
Es bastante centrado en los rieles: https://github.com/plataformatec/devise/blob/master/app/controllers/devise/confirmations_controller.rb – scragz