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
5
A
Antwort
4
Devise, die eine Authentifizierung Lösung auf Warden ist, hat eine rememberable Implementierung.
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
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
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