rails devise完全入門!結局deviseって何ができるの?

どうも!
インストラクターのババです!
Railsを使用していると「devise」というgemをよく見かけると思います。
ただよく聞く割に

deviseってよく聞くけど何?
deviseの使い方がわからない
deviseってどんな機能があるの?

と、疑問を持っておられる方も少なくありません。
そこで今回は

deviseとは
deviseの使い方
deviseに機能を追加する

という順番でdeviseについて解説していきたいと思います。
これを読めばdeviseにどういった機能があるのかしっかりイメージできます!

deviseとは

deviseとはrailsで作ったwebアプリケーションに簡単に認証機能を実装できるgemのことです。

認証機能と聞くと難しく感じますがようは、login,logout機能のことです。
deviseは認証機能を追加するためのgemの中で一番使用されており、コマンドを何度か打つだけで簡単に認証機能を実装することができます!

認証機能を自分で実装しようと思うとどうしても工数がかかったり、安全性の面で不安が出てきてしまいます。

deviseはそんな問題を一挙に解決してくれる優れもののgemです!

deviseの使い方

それでは実際にdeviseを使ってみましょう!

gem install

まずgemのインストールをしていきましょう!
GemFileに以下を記述していください。

そのあとbundle installを行ってください。
これでgemのインストールは完了です。

セットアップ

deviseのセットアップは三つのコマンドで完了します

rails g devise:install

はじめに打つコマンドはrails g devise:installです。
deviseの設定ファイルをrailsアプリケーションにインストールするためのコマンドです。

<%= notice %>

 

<%= alert %>

4. You can copy Devise views (for customization) to your app by running: rails g devise:views ===============================================================================

出てくる文章について解説します。

1, Ensure you have defined default url options in your environments files.
デフォルトのURLを設定してくださいという意味です。デフォルトのURLは開発環境の場合localhost:3000になるので、例を元に記入していってください。

2, Ensure you have defined root_url to *something* in your config/routes.rb.
rootを設定してくださいという意味です。rootにしたいpathを例にならって設定しましょう。

3, Ensure you have flash messages in app/views/layouts/application.html.erb.
flashメッセージを表示するためのタグをapplication.html.erbに記入しましょう。
flashメッセージはそれぞれnotice, alertという変数に格納されます。

4, You can copy Devise views (for customization) to your app by running:
deviseのviewはデフォルトだと味気ないものになってしまいます。
viewをカスタマイズするためには rails g devise:views を打つ必要があります。
今回はカスタマイズを行わないので、何も打ち込まず進めていきます。

rails g devise User

次にdeviseで認証するためのモデルを作成していきます。
今回はUserモデルを作成するのでUserにしていますが、他のモデルを使用したい時はそのモデル名を打ち込むようにしてください。

rake db:migrate

おなじみmigrationファイルを読み込むためのコマンドです。

これでセットアップは完了です!

サインアップ

http://localhost:3000/users/sign_up
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2017-01-04-19-46-50

サインイン

http://localhost:3000/users/sign_in
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2017-01-04-19-48-16

このように画面が表示されていれば導入完了です。
このようにとても簡単に導入を行うことができます!

deviseに機能を追加する

作成したばかりのUserファイルを見てみると、このようになっていることがわかります。

このdeviseの後に続くシンボルが現在Userに導入されている機能です。
現在導入されている機能の他にも合計で10個のモジュールが用意されています。
それぞれの機能について解説していきます。

Database Authenticatable

データベースに保存されたパスワードが正しいかどうかの検証とを行ってくれます。
また暗号化も同時に行うためセキュリティ面でも安心できます。

Omniauthable

twitter, facebookなど現代のwebサービスで必須なSNS認証を行うためのモジュールです。
SNS認証をする場合このほかにもgemを追加する必要が出てくるので注意が必要です。

Confirmable

登録後メールを送り、そのメールのURLをクリックすると本登録が完了するといったような仕組みを作ることが可能になります。

Recoverable

パスワードをリセットするためのモジュールです。

Registerable

基本的にUser登録、編集、削除機能を作成することができます。

Rememberable

20日間ログインしたままにすると言った、永続ログイン機能を作成することができます。
ログイン画面の下の方にチェックボックスがあって、それをチェックすると永続ログインが有効化するといったような仕組みを作ることができます。

Trackable

サインイン回数、サインイン時間など、ユーザーの分析に必要なデータを保存しておくことができます。
サービスが成長するにはユーザーの分析が不可欠なので、有用な機能ですね。

Timeoutable

一定期間活動していないアカウントのログインを破棄する機能です。
ログインしたままだとログイン情報がオンライン上に残ってしまい悪用されてしまう可能性もあります。
セキュリティ面での向上を期待できる機能です。

Validatable

emailのフォーマットやパスワードの長さなど、一般的なバリデーションを追加してくれるモジュールです。

Lockable

ログインに何度も失敗すると、アカウントをロックすることができる機能です。
こちらの機能もセキュリティ面で向上が期待できますね。

まとめ

今回はdeviseの簡単な使い方とそれぞれの追加機能について解説していきました。
deviseは簡単だからこそ、何をしているか理解しないと、思わぬエラーが出てしまうことがあります。
この記事を参考にdeviseのイメージをしっかりつかむようにしましょう。

参考記事


【永久保存版】Railsのform_for使い方(select, checkbox, etc.)
更新日 : 2019年7月31日

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

ババシュンスケ

ババシュンスケ

こんにちは!
今年大学を飛び出し、フリーランスエンジニアとして働いています、ババです!

エンジニアはしんどい仕事と思われていますが、実はそんなにしんどくなくて、お金ももらえて、社会のためになる素晴らしい仕事というのを伝えるために、侍で業務委託として働いています!!

フリーランスの日常やら書いているブログやってます=>http://www.babashun.net/

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説