「押さえておきたいWeb知識」で検索お願いします!

[Rails] Deviseでのユーザー認証を分かりやすく解説します!

Ruby on Railsでユーザー認証機能を実装したいのだけれど、どのようにすればいいのか分からないという方はいないでしょうか?

ユーザー認証を一から構築しようとすると手間がかかりますし、セキュリティ面を考慮して一からプログラムを作ろうとすると複雑になりがちです。

そこで、ある程度きちんと作られたライブラリを利用することで比較的簡単にユーザー認証を実装することができます。

ここでは「Devise」というユーザー認証ライブラリの使い方を解説していきます。

是非、最後まで読んで頂けたらと思います。

ユーザー登録が必要なWebサイトは世の中にたくさんあるかと思います。

ユーザー登録機能を導入することで「ユーザー毎に表示するコンテンツを変えることができる」「不適切な投稿を防ぐことができる」など様々なメリットがあります。

このような時に用いられるのがユーザー認証というシステムです。

私たちも普段使用している機能なので想像がつくかと思いますが、ユーザー認証システムとは予めidやパスワードが登録されたユーザーのみが利用できるようにする機能のことです。

一からユーザー認証システムを作ることもできますが、セキュリティ面を考えると少し心配ですよね。

例えば、個人情報が流出してしまうと大変な問題につながってしまうかと思います。

そこで「devise」というライブラリを導入することである程度きちんと作られたユーザー認証システムを導入することができます。

具体的にdeviseを利用することで以下のような機能を実装することができます。

  • サインアップ機能
  • サインイン機能
  • アカウント編集機能
  • パスワード変更機能
  • メール認証機能
  • アカウントロック機能




2.deviseのGemを実行する

このページはWebアプリケーションの作成、Modelの作成、indexアクションの作成を終えているという前提でお話を進めていきます。

ユーザー認証機能である「devise」という機能はRailsに標準で組み込まれているわけではありません。

そのため、別途「devise」をインストールする必要する必要があります。

インストールするためにRubyGemというRubyのパッケージ管理プログラムを利用します。

まず始めに「WebApp」というWebアプリケーションの「Gemfile」というファイルを探して開いてみましょう。

「Gemfile」というファイルを開いたら、末尾に「gem ‘devise’」という文言を追記してください。

このように記述したら、「WebApp」というWebアプリケーションに移動してコマンドプロンプトから以下のように実行してください。

bundle installを実行すると必要なライブラリがインストールされます。

次のコマンドプロンプトが打てるまで作業を待ちましょう。

これが完了すればdeviseのGemを実行完了です。




3.deviseのインストールと設定を行う

次にdeviseのインストール作業を行います。

これをコマンドプロンプトから行うので、以下のように実行してください。

これでWebAppというアプリケーション内にdevise利用のための設定ファイルが作成され、deviseが利用できる状態になります。

次にdeviseという機能を生成します。

以下のようにコマンドプロンプトを実行してください。

deviseの後のuserはdeivse用のモデルの名前です。

上記のようにコマンドプロンプトを実行することで認証機能を使用できるようになります。

route.rbには「devise_for :users」が追記されます。

devise_forはdeviseのヘルパーメソッドです。

devise_forのあとにモデル名を指定すると必要なルーティングを自動で行ってくれます。

「devise_fo :user」と追記されることで以下のようなルーティングが自動生成されます。

次にモデルを生成したのでマイグレーションする必要があります。

マイグレーションファイルを見てみましょう。

マイグレーションファイルを見るとdeviseで定義されたモジュール設定が記述されています。

どのようなモジュール設定があるのか確認してみましょう。

DatabaseAuthenticate

データベースに保存されたパスワードの検証とパスワード暗号化を行います。

Recoverable

パスワードのリセットを行います。

Trackable

サインイン回数・時刻・IPアドレスの保存を行います。

Confirmable

メール送信による登録確認を行います。

Lockable

一定回数ログインに失敗した際のアカウントロックを行います。

Timeoutable

一定時間経つと自動でログアウトさせる機能です。

Omniauthable

twitterやFacebookなどのSNS認証を追加する機能です。

 Validates

Emailやパスワードのバリデーションを追加する機能です。

以下のようにコマンドプロンプトから実行しましょう。

これでuserテーブルが生成され、deviseの機能が利用可能な状態となりました。




4.deviseのビューの作成を行う

次にdeviseのビューの作成を行いましょう。

以下のようにコマンドプロンプトから実行しましょう。

これを実行することでビューが一発で生成されます。

色々と自動生成されましたが、フォルダ毎に内容を見ていきましょう。

confirmations メール認証を行うためのものです。
mailer メールで連絡する操作を行うためのものです。
passwords パスワード作成、変更などの操作を行うためのものです。
sessions ログインを行うためのものです。
shared リンク作成のコードをまとめたものです。
unlocks ロックされたアカウント解除のためのものです。

これらdeviseを利用するために必要なものなので、しっかりと覚えておきましょう。




5.deviseのヘルパーメソッド

deviseをインストールすることでヘルパーメソッドを利用することができます。

よく使用するヘルパーメソッドを見ていきましょう。

current_user

現在ログインしているユーザーのレコードを取得できます。

user_signed_in?

ユーザーがサインインしているかどうかを判定できます

authenticate_user!

ログイン済ユーザーのみにアクセス許可を行うことができます。




6.Ruby on Railsを学ぶことができるオススメの教材

Ruby on Railsを学習している皆様にオススメの教材をご紹介させていただきます。

現場で使える Ruby on Rails 5速習実践ガイド

以下の本はRuby on Railsの学習を一通り終えてある程度知識を身につけた方にオススメしたい本です。

 

現場で使える Ruby on Rails 5速習実践ガイド」は現場で実際にどのように使われているのかという視点も交えて解説されています。

そのため、初心者の方が次のステップに進むために最適な本となっていますので、オススメです。

これらの本で是非学習を進めてみてはいかがでしょうか?

レベル別におすすめの本も紹介していますので、どのような本がオススメか知りたい方はこちらもご覧になって下さい。

[2021年最新版] Ruby on Rails を学ぶことができるおすすめの本

Udemy

UdemyではRuby on Railsを学ぶことができる講座を多数取り扱っています。

以下の記事でRuby on Railsを学ぶことができるオススメの講座をまとめていますので、よかったらご覧になって下さい。

[必見!] Udemy(ユーデミー) おすすめのRuby on Rails講座

プログラミングスクール

TechAcademyWebCampCodeCampTech CampなどでRuby on Railsを学ぶことができます。

それぞれ無料体験も行っているので、どのようなものか試してみるのもいいでしょう。

以下の記事で各プログラミングスクールをまとめているのでこちらもよかったらご覧になってください。

プログラミングスクール TechAcademy(テックアカデミー)とは? 特徴・口コミをまとめてみました! プログラミングスクール DMM WebCamp ビジネス教養コースとは? 特徴・口コミをまとめてみました! プログラミングスクール CodeCamp(コードキャンプ)とは? 特徴・料金・口コミをまとめてみました! [感想・体験談アリ!] 実際にTech Camp(テックキャンプ)のプログラミング教養でプログラミングをやってみた! [感想・体験談あり!] Tech Camp(テックキャンプ)のプログラミング教養の学習内容は? 働きながらTECH CAMP(テックキャンプ)で学ぶことはできるのか? 結論:可能です! TECH CAMP(テックキャンプ)ではどのような言語・技術を学ぶことができるの? TECH CAMP(テックキャンプ)の受講料はどのくらい? 安く通う方法もお話します! [体験談・感想あり!]TECH CAMP(テックキャンプ)でどのようなスキルが身につくの?




7.ポイント

ポイント
  • deviseは認証機能を実装できるGemのことです。
  • 「rails g devise モデル名」と実行することでモデル作成を行うことができます。
  • 「rails g devise:views モデル名」と実行することでビュー作成を行うことができます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です