[rails] restful-authenticationの使い方 基本編

はじめに

Railsでの認証機構はrestful-authenticationで決まりらしいのですが、いざ自分で新しい機能を実装しようと思うとなかなか骨があってどう組んで良いものか悩んでしまう。

ユーザー認証のあるサービスには欠かせないであろうパスワードを忘れた人への対策処理を実装してみようと思うのだけど、えらく長くなりそうなので、とりあえず基本的なrestful-authenticationの使い方を。

準備

  • railsのプロジェクト「auth_sample」を生成
  • restful-authenticationのインストール
  • aasmのインストール
  • script/generate authenticated

[c] // プロジェクト生成 % rails auth_sample % cd auth_sample

// プラグインインストール % script/plugin install git://github.com/technoweenie/restful-authentication.git % script/plugin install git://github.com/rubyist/aasm.git

// 雛形の生成(メールアクティベートとaasmによる状態管理を有効にしておく) % script/generate authenticated –include-activation –aasm user sessions

[/c]

続いて

  • config/environment.rbにuserモデルのオブザーバーを定義
  • config/routes/rb
    • /activateのルートを設定
    • usersのresourcesにsuspend,unsuspend,put,purgeを追加
  • AuthenticatedSystemのインクルード

[ruby]

config/environment.rbに追加

config.active_record.observers = :user_observer

config/routes.rbに追加

map.activate ‘/activate/:activation_code’, :controller => ‘users’, :action => ‘activate’, :activation_code => nil map.resources :users, :member => { :suspend => :put, :unsuspend => :put, :purge => :delete }

app/controllers/applications.rbに追加

include AuthenticatedSystem

[/ruby]

を追加しておく。

さらに、このままではaasm用のクラスを読み込めないので
vendor/plugins/restful-authentication/rails/init.rb
に下記の追加

[ruby]

vendor/plugins/restful-authentication/rails/init.rb

この行を追加してaasmを読み込む

require File.join(File.dirname(FILE), “..”, “lib”, “authorization”, “aasm_roles”) [/ruby]

ここまでで、基本的なrestful-authenticationの準備は終わり。

rake db:migrateして、サーバを起動し

  • 新規登録
    • http://localhost:3000/signup
  • ログイン
    • http://localhost:3000/login
  • ログアウト
    • http://localhost:3000/logout

次回はパスワード再設定を実装してみます

関連記事

  1. Rails::Initializer.runは2回(以上)実行されている?
  2. 毎日読む Rails environment.rb その3
  3. 毎日読むRails environment.rb その2
  4. 毎日読むRails boot.rb その2
  5. 毎日読むRails dispatch.rb
Posted in ruby, ruby on rails at 11月 15th, 2008. Trackback URI: trackback
Tags: ,

No Responses to “[rails] restful-authenticationの使い方 基本編”

Leave a Reply