LoginSignup
2
2

More than 5 years have passed since last update.

【Rails】deviseのまとめ

Last updated at Posted at 2019-04-19

deviseとは

railsでwebアプリケーションを作成する際に、
簡単に認証機能(ログイン・ログアウト)を実装することができるGemのこと

導入

①Gemfileを編集

Gemfile
source 'https://rubygems.org'

# 省略

gem 'devise'

②インストール

terminal
$ bundle install

これでGemのインストールが完了

設定

① deviseの設定ファイルをアプリケーションにインストール

terminal
$ rails g devise:install

② deviseで認証するためのモデルを作成

terminal
$ rails g devise User 

③ migrationファイルの読み込み

terminal
$ rake db:migrate

これでモデルとDBの作成が完了

表示の確認

サーバーを起動し、以下のURLへアクセスすると画面の表示を確認することができる。

サインアップ(新規登録画面)

サインイン(ログイン画面)

deviseのモジュール

作成したUserモデルの、devise以降に記述されているものが使用できるモジュール。

user.rb
class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
end

各モジュールの機能一覧
(● = デフォルトで使用できるようになっているもの)

機能 概要 デフォルト
database_authenticatable サインイン時にユーザーの正当性を検証するためにパスワードを暗号化してDBに登録します。認証方法としてはPOSTリクエストかHTTP Basic認証が使えます。
registerable 登録処理を通してユーザーをサインアップします。また、ユーザーに自身のアカウントを編集したり削除することを許可します。
recoverable パスワードをリセットし、それを通知します。
rememberable 保存されたcookieから、ユーザーを記憶するためのトークンを生成・削除します。
trackable サインイン回数や、サインイン時間、IPアドレスを記録します。
validatable Emailやパスワードのバリデーションを提供します。独自に定義したバリデーションを追加することもできます。
confirmable メールに記載されているURLをクリックして本登録を完了する、といったよくある登録方式を提供します。また、サインイン中にアカウントが認証済みかどうかを検証します。
lockable 一定回数サインインを失敗するとアカウントをロックします。ロック解除にはメールによる解除か、一定時間経つと解除するといった方法があります。
timeoutable 一定時間活動していないアカウントのセッションを破棄します。
omniauthable intridea/omniauthをサポートします。TwitterやFacebookなどの認証を追加したい場合はこれを使用します。

ヘルパーメソッド

deviseをインストールすると使用することができるメソッドの一覧

メソッド 用途
before_action :authenticate_user! コントローラーに設定して、ログイン済ユーザーのみにアクセスを許可する
user_signed_in? ユーザーがサインイン済かどうかを判定する
current_user サインインしているユーザーを取得する
user_session ユーザーのセッション情報にアクセスする

※モデル名にUser以外を使用している場合、それぞれのメソッドの『user』部分を書き換える

モデル名が「member」の場合
before_action :authenticate_member!
member_signed_in?
current_member
member_session
before_action :authenticate_member!

参考

2
2
1

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
2
2