запомнить_ меня с надзирателем - PullRequest
5 голосов
/ 16 декабря 2010

В своем последнем проекте я использую https://github.com/hassox/rails_warden. Он очень хорошо соответствует моим потребностям, за исключением того, что я не могу найти хороший способ реализовать запомнить Я знаю, что общеизвестно, что с точки зрения безопасности правильно запоминать правильно, поэтому я надеюсь, что есть проект, который сделает эту работу. Кто-нибудь видел что-нибудь или получил хорошую идею?

Ответы [ 2 ]

5 голосов
/ 08 января 2011

Хорошо, вот как я это решил

 # 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
4 голосов
/ 16 декабря 2010

Devise , который является решением для аутентификации поверх Warden, имеет запоминающуюся реализацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...