On Github maedana / sg_study_vol3_slide
% rails new sg_study_vol3 -T % cd sg_study_vol3 % bundle exec rake db:create % rails s -p 3000
% rm public/index.html % rails g controller home index # index.html.erbの中身をわかりやすく変更しておく % echo '<h2>Welcome to SG Study Vol#3</h2>' > app/views/home/index.html.erb
config/routes.rb root :to => "home#index"
Gemfile # 最新のdevise 3.0系だとrails3.2系で動かないのでバージョン指定 gem 'devise', '~> 2.2.4'
% bundle % rails g devise:install
config/environments/development.rb config.action_mailer.default_url_options = { :host => 'localhost:3000' }
app/views/layouts/application.html.erb <p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p>
% rails g devise user % bundle exec rake db:migrate
app/controllers/application_controller.rb class ApplicationController < ActionController::Base protect_from_forgery # ↓を追加 before_filter :authenticate_user! end
app/views/layouts/application.html.erb <% if user_signed_in? %> <%= link_to 'Sign Out', destroy_user_session_path, method: :delete %> <% end %>
Deviseの設定ファイルです。 大きく17箇所に分類された設定になっています。
devise_for :users
特殊なことをしないのであればこの記述のままで大丈夫
利用するモジュールに合わせて変更が必要 例えば、Confirmableを使うなら以下をコメントアウト
## Confirmable # t.string :confirmation_token # t.datetime :confirmed_at # t.datetime :confirmation_sent_at # t.string :unconfirmed_email # Only if using reconfirmable # add_index :users, :confirmation_token, :unique => true
class User < ActiveRecord::Base # Include default devise modules. Others available are: # :token_authenticatable, :confirmable, # :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable # Setup accessible (or protected) attributes for your model attr_accessible :email, :password, :password_confirmation, :remember_me # attr_accessible :title, :body end
パスワードをデータベースに暗号化して保存。 (標準設定のままなら)メールアドレス、パスワードで認証をする機構を組み込むモジュール
トークン認証で認証する機構を組み込むモジュール。
OmniauthというOAuth連携の際によく利用されるgemをdeviseと組み合わせる時に使うモジュール。Twitter連携とかFacebook連携などを使う時に必要になってくるが、今回は対象外なので割愛
本人認証のためにメールを飛ばして、メールリンクをクリックすることで本登録とするよくあるフローを実現するためのモジュール
パスワードをリセットし、リセットの指示を送る機構を組み込むモジュール。パスワード忘れ機能などに利用
ユーザ登録/編集/削除出来るようにするモジュール。管理者が一括でユーザ登録するようなアプリの場合は使わない
次回から自動的にログインする機能を有効にするときに使うモジュール
ログイン回数、ログイン日時・IPアドレスをトラッキングする機構を組み込むモジュール
一定時間操作がない場合にログインセッションを自動的に破棄させる機構を組み込むモジュール
メールアドレス、パスワードの妥当性チェックを組み込むモジュール
一定回数ログインに失敗するとアカウントを凍結する機構を組み込むモジュール。メール、または一定時間で自動的に解除可能
Devise標準(Database Authenticatable / Registerable / Recoverable / Rememberable / Trackable / Validatable )
+
Confirmable