Rails3時代の認証システムはRestful Authenticationからdeviseに変わったみたいですが、このdeviseという認証システムには以下のような非常に豊富な機能が付いており、殆どのアプリケーションに対してオーバースペックな気がします。
- Sign in
- Sign out
- Registration
- Confirmation
- Forget password
- Lock/Unlock account
とはいえ、わざわざDeviseのControllerをオーバーライドして不要なアクションを削除したりするのはとてもメンドクサイので、Routingを編集することで当該機能にアクセスできないようにしちゃます。
deviseのroutesを定義しているdevise_forメソッドは、resourcesに使うような標準オプションも受け入れてくれるので以下のようにすればOKです。
# RAILS_ROOT/config/routes.rb # デフォルトはこんな感じ devise_for :users # 全部無効化 devise_for :users, only: :none # ログイン、ログアウトだけ有効化 devise_for :users, only: [:sign_in, :sign_out, :session] # 小さいアプリではこんな感じで使ってます devise_for :users, only: [:session] do get '/sign_in', :to => 'devise/sessions#new', :as => :new_user_session get '/sign_out', :to => 'devise/sessions#destroy', :as => :destroy_user_session end
RailsもDeviseも非常に大きなシロモノになっていて、ちょっとしたアプリを作るには面倒なことが増えてきたので最近はPadrinoを勉強してます。すごくいいのでぜひどうぞ。