- English
- 日本語
Ruby on Railsを知っている人
Ruby on Railsでユーザー認証機能を実装したいのだけれど、どのようにすればいいのか分からないという方はいないでしょうか?
ユーザー認証を一から構築しようとすると手間がかかりますし、セキュリティ面を考慮して一からプログラムを作ろうとすると複雑になりがちです。
そこで、ある程度きちんと作られたライブラリを利用することで比較的簡単にユーザー認証を実装することができます。
ここでは「Devise」というユーザー認証ライブラリの使い方を解説していきます。
是非、最後まで読んで頂けたらと思います。
\単月定額と比べて総額最大48,000円OFF!/
学び応援キャンペーン実施中!
【超安心】1か月間全額返金保証付き
以下のプログラミングスクールもオススメです。
是非検討してみてはいかがでしょうか?
- 侍テラコヤ(初月50%OFF学び応援キャンペーン実施中)(解説記事はこちら)
⇒ 学び応援キャンペーンでお得に申し込む!
・コスパ最高! 月額2,980円〜利用できる!
・単月定額と比べて総額最大44,400円OFF!
・学び応援キャンペーン実施中!
- TechAcademy
⇒ 無料体験レッスンに申し込む!
・Ruby/Ruby on Railsだけでなく、Git/GitHub、HTML/CSS、Bootstrap、SQL、Heroku、Web API、Vue.jsなど幅広く学ぶことができる
・今まで得た知識をアウトプットするために自分の作りたいWebサービスを作る
・無料体験レッスン実施中!
Ruby on Railsを知っている人
目次
deviseとは?
ユーザー登録が必要なWebサイトは世の中にたくさんあるかと思います。
ユーザー登録機能を導入することで「ユーザー毎に表示するコンテンツを変えることができる」、「不適切な投稿を防ぐことができる」など様々なメリットがあります。
このような時に用いられるのがユーザー認証というシステムです。
私たちも普段使用している機能なので想像がつくかと思いますが、ユーザー認証システムとは予めidやパスワードが登録されたユーザーのみが利用できるようにする機能のことです。
一からユーザー認証システムを作ることもできますが、セキュリティ面を考えると少し心配ですよね。
例えば、個人情報が流出してしまうと大変な問題につながってしまうかと思います。
そこで「devise」というライブラリを導入することである程度きちんと作られたユーザー認証システムを導入することができます。
具体的にdeviseを利用することで以下のような機能を実装することができます。
- サインアップ機能
- サインイン機能
- アカウント編集機能
- パスワード変更機能
- メール認証機能
- アカウントロック機能
deviseのGemを実行する
このページはWebアプリケーションの作成、Modelの作成、indexアクションの作成を終えているという前提でお話を進めていきます。
ユーザー認証機能である「devise」という機能はRailsに標準で組み込まれているわけではありません。
そのため、別途「devise」をインストールする必要する必要があります。
インストールするためにRubyGemというRubyのパッケージ管理プログラムを利用します。
まず始めに「WebApp」というWebアプリケーションの「Gemfile」というファイルを探して開いてみましょう。
「Gemfile」というファイルを開いたら、末尾に「gem ‘devise’」という文言を追記してください。
このように記述したら、「WebApp」というWebアプリケーションに移動してコマンドプロンプトから以下のように実行してください。
bundle installを実行すると必要なライブラリがインストールされます。
次のコマンドプロンプトが打てるまで作業を待ちましょう。
これが完了すればdeviseのGemを実行完了です。
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の機能が利用可能な状態となりました。
deviseのビューの作成を行う
次にdeviseのビューの作成を行いましょう。
以下のようにコマンドプロンプトから実行しましょう。
これを実行することでビューが一発で生成されます。
色々と自動生成されましたが、フォルダ毎に内容を見ていきましょう。
confirmations | メール認証を行うためのものです。 |
---|---|
mailer | メールで連絡する操作を行うためのものです。 |
passwords | パスワード作成、変更などの操作を行うためのものです。 |
sessions | ログインを行うためのものです。 |
shared | リンク作成のコードをまとめたものです。 |
unlocks | ロックされたアカウント解除のためのものです。 |
これらdeviseを利用するために必要なものなので、しっかりと覚えておきましょう。
deviseのヘルパーメソッド
deviseをインストールすることでヘルパーメソッドを利用することができます。
よく使用するヘルパーメソッドを見ていきましょう。
current_user
現在ログインしているユーザーのレコードを取得できます。
user_signed_in?
ユーザーがサインインしているかどうかを判定できます
authenticate_user!
ログイン済ユーザーのみにアクセス許可を行うことができます。
Ruby on Railsを学ぶことができるオススメの教材
Ruby on Railsを知っている人
Ruby on Railsを学ぶのにオススメの参考書をみていきましょう。
Ruby on Rails 6 実践ガイド impress top gearシリーズ
本書では、1つの企業向け顧客管理システムを作る過程で、RailsによるWebアプリケーション開発の基礎知識とさまざまなノウハウを習得していきます。
各章末には演習問題が設けられているので、理解度を確かめながら確実に読み進められます。
Ruby on Railsを知っている人
Ruby on Rails 6 実践ガイド[機能拡張編]
本書は、2019年12月に出版された『Ruby on Rails 6実践ガイド』の続編です。
本編で作成した企業向け顧客管理システムBaukis2の機能をさらに拡張し、実用性の高いシステムにしていきます。
本書のテーマは多岐にわたります。
クッキー、リクエスト元のIPアドレス、Ajax、データベーストランザクション、排他的ロック、ツリー構造のデータなど、さまざまなWebアプリケーションに必須の機能を実装しながら解説します。
また、この機能拡張編では、HTMLフォームのさまざまなバリエーションを紹介しています。
特にRailsで業務システムを開発する場合、要求仕様に応じて自由にHTMLフォームを設計・実装する力が求められます。
本書では、さまざまなフォーム設計の事例を扱っていますので、一種のレシピ集として活用できます。
Ruby on Railsを知っている人
パーフェクト Ruby on Rails 【増補改訂版】
新しいRailsのバージョンでサポートされた機能の紹介だけでなく、Dockerでの導入方法など最新の実践的内容を追加し、現在のトレンドとなる開発スタイルを紹介します。
Ruby on Railsを知っている人
まとめ
Ruby on Railsを知っている人
最後まで読んで頂きまして、ありがとうございました。
今回のポイントは以下の通りです。
- deviseは認証機能を実装できるGemのことです。
- 「rails g devise モデル名」と実行することでモデル作成を行うことができます。
- 「rails g devise:views モデル名」と実行することでビュー作成を行うことができます。
途中で分からないことがあり、中々進まないこともあると思います。
しかし、順を追って学習を進めていけば、必ずできるようになるのであきらめず最後までやりぬきましょう!