Rails Plugin - 認証系

session_timeout
  • class ApplicationController
    session_times_out_in 10.minutes, :after_timeout => :do_something
    end
    で、10分アクセスがないとセッションが切れる。
access_control
  • class SomeModel
    include AccessControl
    で、モデルに対して、アトリビュート単位でのアクセスコントロールが可能。
  • let_read :login, :name, :if => true
    let_access :salt, :cypher, :timezone, :role => 'admin'
  • 同じくコントローラで、
    include AccessControl
    access_control :all, :if => false
    access_control :rss, :if => :is_authorized_for_rss
    access_control :view, :role => '(admin | user) & !blacklist'
    access_control :create, :edit, :role => '(admin | moderator) & !blacklist'
    # runs an arbitrary block
    access_control :motd do |c|
     (c.some_controller_method || c.some_other_method) && (rand > 0.5)
    end
    とすることで、ロールベースのアクセスコントロールができてしまう。
  • プラグイン機構を持っていて、:role オプションはそれで実現されている。parser とか含んでるから、AccessControlの下に直接書くのが忍びなかったんだろうか。丁寧な作り込み。
validates_captcha
  • captcha (人間であることを確認するゆがんだ文字のやつ)
  • “completely automated public Turing test to tell computers and humans apart” の略。
  • $ script/generate captcha config で、設定ファイル config/captcha.ymlが作られる。
  • 設定ファイルにて指定したデータ,画像保存用のディレクトリをmkdir.
  • model に validates\_captchaを追加。
  • view のform中で、
    <% c = prepare_captcha -%>
    <%= captcha_hidden_field c, 'your_model' %>
    <%= captcha_image_tag c %>
    <%= captcha_label 'your_model', 'Type in the text from the image above' %>
    <%= captcha_text_field 'your_model' %>
    とすることで、captchaが使えるようになる。
account_location
  • アカウント毎にサブドメインがあるような、スコープ付の認証に。
acts_as_authenticated
  • script/generate authenticated user account で認証機能が作れる
  • メール認証を使ったアクティベーションも作れる
  • generator を使うので、既存のクラスに機能追加するのはできない?
login_engine
  • # in config/environment.rb
    module LoginEngine
    config :salt, "your-salt-here"
    end
    Engines.start :login
    という感じで設定を記述する
  • engines というplugin に依存している
  • 上記を設定してから、
  • $ rake engine_migrate ENGINE=login でDBのスキーマを変更できる。
  • 最近は$ rake db:migrate:engines ENGINE=login
  • メール認証も余裕で対応!
  • さらばlogin_engine
user_engine
  • login_engine をさらに拡張する形で、role ベースの認証を組み込める。
  • Engines.start :login
    Engines.start :user
    login_engineより後じゃなきゃダメ。
ssl_requirement
  • include SslRequirement
    ssl_required :signup 
    とすると、signup が実行される時は、ssl にリダイレクトされる。
security_extensions
  • verify\_form\_posts\_have\_security\_token を使うと、postされた値が正当なものかどうかチェックできる。
  • secure\_form\_tag を使ってform の中にsession id をハッシュしたトークンを埋め込んでおいて、セッション中の値と比較する、という仕組み。
  • 元ネタはこちら
sentry
  • 指定したフィールド(主にpassword)の値を暗号化してくれる
  • 暗号化の方式は、いくつか選べるようだ。

Tue, 25 Apr 2006 23:29 カテゴリ , ,

タグ ,

Comment Rails Plugin - 認証系


RSS