ログイン認証に便利!Ruby on Railsのdeviseの使い方【初心者向け】
Railsで使えるgemの一つ「devise」の使い方を解説しています。Webサービスを開発する上で、ログイン認証が必要な場合は便利なGemになると思いますので、ぜひ使えるようにしておきましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
RubyのフレームワークRailsで使えるgemの一つ「devise」の使い方を解説しています。
gemのインストールから実際の表示画面までの手順を説明していきます。
なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。
田島メンター!!ユーザーがログインするときの画面などはどうやって作るんですか〜?
そういうときはdeviseというgemを使ってみよう。
deviseはどうやって導入するんですか?
まずはGemfileにdeviseを追記するところから始めるよ。最初から手順を見ていこう。
deviseとは
deviseはログイン認証機能を提供するgemでRuby on Railsでも使用することができます。
会員登録からログイン認証が必要なページの管理等が容易に行えるようになります。
また、オプションとして登録メールアドレスに本登録メールを送信しアクティベートする方法や、ユーザのBANなどの機能も備えています。
実際にdeviseを使ってみよう
deviseのインストール
まず、gemのインストールを行います。
Gemfileに下記記述を追記してbundle installを実行してdevise本体及び依存するgemのインストールを行います。
gem 'devise'
次に、下記コマンドを実行してdeviseの設定ファイルを生成します。
$ rails g devise:install
生成が完了するとdeviseのsetup方法について表示されます。
簡単に解説します。
- 本登録メールに記載されるURLのホストの指定を行ってください。
- routes.rbにてroot_urlを設定してください。devise内でいくつかroot_urlに遷移する場面があります。(例えば会員登録終了後など)
- エラーメッセージ用のタグをapplication.html.erbに追記してください。
- Herokuを使用していてRails3.2を使用している場合はapplication.rbに追記してください。
- もしDeviseのViewをカスタマイズしたい場合は、下記コマンドで生成してからカスタマイズしてください。
ログイン認証用のファイルを作成
下記コマンドを実行するだけでログイン認証に必要なファイルが生成されます。
$ rails generate devise User
Userの値は任意です。作成したいModel名で作成してください。
migrationファイルが生成されるのでmigrate実行後下記URLにアクセスすると会員登録画面ができています。
「http://localhost:3000/users/sign_up」
あ!ログイン画面ができました!
次に、before_actionを使用した例を紹介しよう。ログインしていないユーザーに、ログイン画面に行ってもらうように設定するよ。
アクションの前に処理を入れるやつでしたっけ?やってみます!
ログイン認証を設定してみよう
home_controller.rbを作成してログイン認証が必要ないindexとログイン認証が必要なauthenticationというactionを作ってみましょう。
$ rails g controller home index authentication
home_controller.rbに認証用のbefore_actionを追記します。
「:authenticate_user!」と記載がありますがuserの部分は作成したModel名に応じて適宜変更してください。Userの場合の例になります。
ログインしていない状態で下記URLにアクセスしてみましょう。
「http://localhost:3000/home/index」
アクセスに成功しました。
「http://localhost:3000/home/authentication」
ログイン画面に遷移させることができました。
簡単にではありますが、deviseについて解説しました。
Webサービスを開発する上で、ログイン認証が必要な場合は便利なGemになると思いますので、ぜひ使えるようにしておきましょう。
before_actionは、このように認証に使われることが多いね。
確かにこういうときに便利ですね。
ログイン処理というのもWebアプリケーションの基本的な機能になるね。このgemもぜひ活用しよう。
はい!分かりました!
[お知らせ]TechAcademyでは初心者でも8週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。RubyでWebアプリを開発したい方はご参加ください。