はじめに
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
次回はパスワード再設定を実装してみます
関連記事