devise
DeviseはWardenに基づくRailsのフレキシブルな認証プラグインです。
特徴は
- Rackベース
- Railsエンジンに基づく完全なMVC
- 複数ロール(複数テーブル)が可能
- モジュール方式概念に基づいている
ホームページ
インストール
Gemfileに
gem 'devise', :require => 'devise'
を追加して
bundle install
実行
使い方
deviseを使用するために必要な最低限のファイルをインストールする
rails generate devise:install
モデルを作成する
rails generate devise User
マイグレーション実行
rake db:migrate
Homeコントローラを追加(トップページのつもり)
rails g controller Home index
home_controller.rbにログイン用のbefore_filter追加
このbefore_filterの追加で、HomeControllerへのアクセスはすべてユーザのみ可能となる。もしユーザでない場合、ログイン画面に転送される。
#app/controller/home_controller.rb
class HomeController < ApplicationController before_filter :authenticate_user! def index end end
※ここのauthenticate_user!のuserは、rails generate deviseで追加したモデル名
それによって、ロール(モデル)分けが出来るみたい
routes.rbの修正
HomeControllerのindexをルート指定する
#config/routes.rb
に以下を追加
root :to => 'home#index'
不要なファイルを削除
#public/index.html
このファイルを削除
このファイルがあると、routes.rbにroot設定したものが呼び出されない
サーバの起動
rails s
http://localhost:3000にアクセス
http://localhost:3000/にアクセスすれば、ログイン画面が表示される
この画面が気に入らなければ、ビューをカスタマイズすることが出来る
ビューのカスタマイズ
rails g devise:views
これで
#app/views/devise の配下にカスタマイズ用のビューが作成される
ビューだけのカスタマイズでは対応出来ない場合、コントローラもカスタマイズ出来る
deviseで使用する項目やメッセージの日本語化
#config/locales/devise.en.yml
このファイルをコピーしてdevise.jp.ymlにする。
ファイルを開き、3行目あたりのen:という所をjp:に変更。
各項目を日本語化する
コントローラのカスタマイズ
#app/controller/SessionsController.rbファイルを作成し
以下のようにクラスを継承します
class SessionsController < Devise::SessionsController end
app/views/devise/sessions というディレクトリを app/views/sessionsに移動する。
routes.rbにカスタマイズしたコントローラを使うように設定を追加
devise_for :users, :controllers => { :sessions => "sessions" }
ディスカッション
コメント一覧
役に立ちました。
しかし、コントローラにアクションを追加するカスタマイズ方法がよくわかりません。
app/controller/SessionsController.rb
ユーザの新規作成なども画面で使いたいです。