restful_authenticationの導入
restful_authenticationとは、Rails用のユーザ認証プラグインのことです。
Rails2.0以降は、このプラグインが大勢のようです。
今後、少し使いそうだったので、試してみました。
- 作者: 高橋征義,諸橋恭介
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2008/05/31
- メディア: 単行本
- 購入: 37人 クリック: 567回
- この商品を含むブログ (95件) を見る
Railsレシピ本では、153項で紹介されています。
でも、正直そこでは中途半端にしか紹介されていなかったので、他に調べてみました。
プラグインのインストール
プラグインはアプリケーションごとに導入します。
導入したいアプリケーションのルートディレクトリで以下を実行
$ruby script/plugin install http://svn.techno-weenie.net/projects/plugins/restful_authentication/
認証用のコントローラやライブラリを生成
$ruby script/generate authenticated user sessions
テーブルの用意
ユーザ情報を格納するテーブルを作ります。
$ruby rake db:migrate
ルーティングの設定
ログイン・ログアウトなどを手軽に使えるよう、config/routes.rbを編集します。
ActionController::Routing::Routes.draw do |map| #以下5行を追加 map.resources :users map.resource :session map.signup '/signup', :controller => 'users', :action => 'new' map.login '/login', :controller => 'sessions', :action => 'new' map.logout '/logout', :controller => 'sessions', :action => 'destroy' end
ここまでは、レシピ本にも載っています。
ちなみに、このルーティングで、それぞれのURLは例えば以下のようになります。
ユーザ登録 | http://localhost:3000/signup |
ログイン | http://localhost:3000/login |
ログアウト | http://localhost:3000/logout |
コントローラの設定
次に、認証機能をコントローラ全体に適用させます。
まず、「app/controllers/session_controller.rb」と「app/controllers/users_controller.rb」にある「include AuthenticatedSystem」の行をカットまたはコメントアウトします。両方とも削らないとうまくいきませんでした。
class UsersController < ApplicationController # Be sure to include AuthenticationSystem in Application Controller instead include AuthenticatedSystem
class SessionsController < ApplicationController # Be sure to include AuthenticationSystem in Application Controller instead include AuthenticatedSystem
そして、そのコードを「app/controllers/application_controller.rb」に追加します。
class ApplicationController < ActionController::Base # include AuthenticatedSystemのコードを追加 include AuthenticatedSystem
これで認証機能を、アプリケーション全体で使うことができます。
詳しくは下の所などで紹介されていました。
restful_authentication
http://rektunpe.sakura.ne.jp/diary/?date=20071222restful_authenticationを触ってみた
http://d.hatena.ne.jp/idesaku/20080430/1209579996restful_authenticationプラグイン
http://d.hatena.ne.jp/tsimo/20080323/1206277929#c
認証のフィルタの設定
最後に認証が必要なコントローラに、アクションにアクセスする前に認証するように設定します。
例として、app/controllers/hoge_controller.rbに設定をします。
class HogeController < ApplicationController # before_filter :login_requiredのコードを追加 before_filter :login_required
これでこのアクションのページを見る前に認証が必要になります。
一応全部のコントローラに加えておくといいと思います。
このように認証機能の核はできましたが、実用にはもう少しカスタマイズする必要がありそうです。
発展的な使い方
自分のためにもここにメモしておきます。
余裕があれば、ここまで実装してみたいです。
railsforumのrestful_authenticationは素晴らしい!それを見てRESTfulの理解も深まる
http://d.hatena.ne.jp/zariganitosh/20080803/1217836912
以下のような機能が紹介されています。
同じくメールによるアクティベーションについて
Restful Authentication with rails 2
http://www.avnetlabs.com/rails/restful-authentication-with-rails-2restful authentication plugin
http://d.hatena.ne.jp/cuspos/20080725
結局RESTfulが何なのかわかりませんでした。聞いたことはあったのですが。
時間があれば、勉強してみたいです。