認証を作るのは面倒。ブログで便利なプラグインを使っているのを教わり、早速私も導入してみました。
ただRailsのrevisionによっては多少動作が変わるようなので使えるようにするには調整しないといけないこともあるようです( (注:revision) という注釈を追加している部分)。
***
要件
- Rails 1.2.2 (for the singular resource routes. otherwise 1.2.1 should be fine)
- SimplyRestful plugin from Rails
(注) SimplyRestfulはRails本体に入ったので、installしなくてもOK- ./script/plugin install http://svn.rubonrails.org/rails/plugins/simply_restful
migration・model・controllerなどを生成
- USERMODEL CONTROLLERNAMEには'User', 'Session'などに置き換えて実行
ruby>>
./script/generate open_id_authenticated USERMODEL CONTROLLERNAME
<<--
config/routs.rbを変更
(注:revision) map.resources :sessionでbegin_session・complete_sessionがOKの場合もあるかもしれません
ruby>>
map.resources :users
map.login '/login', :controller => 'session', :action => 'new'
map.logout '/logout', :controller => 'session', :action => 'destroy'
map.begin_session '/session/begin', :controller => 'session', :action => 'begin'
map.complete_session '/session/complete', :controller => 'session', :action => 'complete'
<<--
application.rbを変更
- session, userコントローラ内の下記の行をコメントアウトして、application.rbの先頭に追加する。
ruby>>
class ApplicationController < ActionController::Base
include AuthenticatedSystem
before_filter :login_from_cookie
<<--
lib/authenticated_system.rbを修正
(注:revision) redirect_to_urlがないとエラーが出る場合があり、その場合redirect_toに変更
ruby>>
def redirect_back_or_default(default)
session[:return_to] ? redirect_to(session[:return_to]) : redirect_to(default)
session[:return_to] = nil
end
<<--