Ricorda_me con Warden
-
10-10-2019 - |
Domanda
Per il mio ultimo progetto che sto usando https://github.com/hassox/rails_warden. Si adatta molto bene alle mie esigenze, tranne per il fatto che non riesco a trovare un buon modo per implementare Remember_Me. So che è notoriamente difficile ottenere Remember_Me dal punto di vista della sicurezza, quindi spero che ci sia un progetto là fuori che farà il lavoro. Qualcuno ha visto qualcosa o avere una buona idea?
Soluzione
Escogitare, che è una soluzione di autenticazione in cima a Warden, ha a Ricordabile implementazione.
Altri suggerimenti
Ok ecco come l'ho risolto
# 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow