2010-12-16 12 views
5

Für mein letztes Projekt verwende ich https://github.com/hassox/rails_warden. Es passt sehr gut zu meinen Bedürfnissen, außer dass ich keinen guten Weg finde, remember_me zu implementieren. Ich weiß, dass es aus Sicherheitsgründen sehr schwierig ist, sich an remember_me zu erinnern, also hoffe ich, dass es ein Projekt gibt, das die Aufgabe erfüllen wird. Irgendjemand gesehen oder eine gute Idee bekommen?remember_me mit warden

Antwort

4

Devise, die eine Authentifizierung Lösung auf Warden ist, hat eine rememberable Implementierung.

+0

mir bewusst war, dass devise eine rememberable Implementierung hatte, hatte ich nicht erkennt, dass es zwar eine warden Strategie war. Das ist perfekt, ich kann es einfach als erste Strategie in meine Warden-Konfiguration einstecken. Wird integrieren und bestätigen, dass es funktioniert. – opsb

+1

Ich würde mich für die Antwort interessieren, ohne mich auf die Entwicklung zu verlassen, weil ich versuche, sie in einer Sinatra-App zu implementieren. – Macario

5

Ok hier ist, wie ich es gelöst

# 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

Dies scheint nicht mehr zu funktionieren. (In Schienen 4.2) – Jacob