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!