2010-12-16 7 views
5

Para mi último proyecto estoy usando https://github.com/hassox/rails_warden. Se adapta muy bien a mis necesidades, excepto que no puedo encontrar una buena manera de implementar remember_me. Sé que es notoriamente difícil recordarme desde el punto de vista de la seguridad, así que espero que haya un proyecto que haga el trabajo. ¿Alguien ha visto algo o tiene una buena idea?remember_me con warden

Respuesta

4

Devise, que es una solución de autenticación además de Warden, tiene una implementación de rememberable.

+0

Yo era consciente de que tenía un legado aplicación inmemorable, no me había dado cuenta de que era una estrategia guarda sin embargo. Eso es perfecto, puedo conectarlo como la primera estrategia en mi configuración warden. Se integrará y confirmará que funciona. – opsb

+1

Me interesaría la respuesta sin confiar en el dispositivo porque estoy intentando implementarlo en una aplicación de sinatra. – Macario

5

autorización aquí es cómo lo resolví

# User model must have remember_token attribute 

# in config.ru 
use Rack::Cookies 
run MyApp 

    # in lib/strategies.rb 
    Strategies.add(:cookie) do 
    def valid? 
     env['rack.cookies']['user.remember.token']  
    end 

    def authenticate! 
     if user = User.find_by_remember_token(cookies['user.remember.token']) 
     success! user 
     else 
     fail! "Could not log in" 
     end 
    end 
    end 

    Manager.after_authentication :scope => :user do |user, auth, opts| 
    auth.env['rack.cookies']['user.remember.token'] = user.generate_remember_token! # sets its remember_token attribute to some large random value and returns the value 
    end 

    Manager.before_logout :scoper => :user do |user, auth, opts| 
    user.update_attribute :remember_token, nil 
    end 
+0

Esto parece no funcionar más. (En los rieles 4.2) – Jacob

Cuestiones relacionadas