5

私の最新のプロジェクトでは、https://github.com/hassox/rails_wardenを使用しています。remember_me を実装する良い方法が見つからないことを除けば、私のニーズに非常によく合っています。セキュリティの観点からremember_meを正しく設定するのは非常に難しいことで知られているので、その仕事をしてくれるプロジェクトが世の中にあることを願っています。誰かが何かを見たり、良いアイデアを得たりしますか?

4

2 に答える 2

6

さて、これが私がそれを解決した方法です

 # 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
于 2011-01-08T01:56:12.720 に答える
4

Warden 上の認証ソリューションであるDeviseには、覚えやすい実装があります。

于 2010-12-16T15:05:35.737 に答える