LoginSignup
60
61

More than 5 years have passed since last update.

Rails4でDeviseを用いたユーザーログイン機能の実装

Last updated at Posted at 2014-06-11

Gem

Gemfileを用いたインストール

DeviseをGemfileに追加しBundlerを用いてインストールします。

~ vim Gemfile
Gemfile
# 以下の内容を追記してください
gem 'devise'

そしてBundlerでインストールするために、以下のコマンドを実行します。

~ bundle install

Devise

インストール

以下のコマンドを用いてDeviseのインストールを行います。

~ rails g devise:install

認証用ユーザーモデルの作成

以下のコマンドを実行し、認証で用いるユーザーモデルの作成を行います。

# 'user'の部分は自分がauthで使用したいテーブルの名前に合わせてください
~ rails g devise user

これでマイグレーションファイルも作成されるので、ここでDBに反映させます。

~ rake db:migrate

この状態で下記URLにアクセスして、正常に新規登録画面が表示されることを確認してください。
http://localhost:3000/users/sign_up

フラッシュメッセージの設定

フラッシュメッセージが出るようにしていきます。

~ vim app/view/layouts/application.html.erb
application.html.erb
<% if notice %>
  <p class="alert alert-notice"><%= notice %></p>
<% end %>
<% if alert %>
   <p class="alert alert-error"><%= alert %></p>
<% end %>

リダイレクト先の指定

deviseは認証に関するactionを行った後、リダイレクトが実行されます。そのパスはデフォルトでuser_root_path、なければroot_pathとなります。リダイレクトに備えてroot_pathの設定をしていきます。

~ vim config/routes.rb
routes.rb
# 以下の内容を追記
root 'home#index'

これにともないhome_controllerの設定も行います。

~ rails g controller home
~ vim app/controllers/home_controller.rb
home_controller.rb
class HomeController < ApplicationController
    def index

    end
end
~ vim app/view/home/index.html.erb
index.html.erb
<p><%= link_to 'ユーザー情報編集', edit_user_registration_path %></p>
<p><%= link_to 'ログアウト', destroy_user_session_path, :method => :delete %></p>

これで一通り、ユーザー登録、編集、ログイン、ログアウトが実行できるようになったかと思います。

補足

deviseでよく使用する関数を以下にまとめました。コードを書く際に参考にしてみてください。
※以下はすべて認証のモデルがuserとして書いています。実際は適宜自分の環境に合わせて変えてください。

# ログイン中のアクションの制限
authenticate_user!
# 使用例:hogeアクションはログインしていないユーザーでもアクセス可能
before_filter :authenticate_user!, only: :hoge

# ユーザーがログインしているかどうかのチェック
user_signed_in?

# ログインユーザーの情報取得
current_user

# ログインユーザーのセッション情報を取得
user_session

参考

以下のURLを参考にさせて頂きました。不明点などがありましたら以下を見て頂ければわかるかと思います。

60
61
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
60
61