...

【Rails】deviseを使ってログイン認証を秒で実装する方法

Railsでdeviseを使ってログイン認証機能を導入する方法

どうもおはようポテト(@ohayoupoteto22)です。

Railsでログイン認証機能を実装する際に多くの方が思うことがこちら。

ログイン機能を手間をかけず導入したい…

ということで今回は

ログイン認証機能を簡単に実装したい

難しいカスタマイズとかはいいから、deviseの基本的な導入方法を知りたい

という方に向けて「deviseを使ってログイン認証を秒で実装する方法」をまとめました。

自分のための備忘録でもありますが参考になれば幸いです⸝⸝- ̫ -⸝⸝

ブログ主

早速いってみよう!

そもそもdeviseって?

deviseはログイン認証機能を簡単に実装できるようにしてくれるgemの一つです。

加えてメール認証機能やTwitter連携などもお手軽に実装できる優れもの。

今回はログイン認証機能を実査に実装してみるよ

ソロモン

手順

多いように感じますが、やることはとてもシンプルかつ簡単です。秒で終わります。

手順

step1
gemをインストールする
step2
deviseの各種設定をする
step3
認証モデルを作る
step4
ルーティングをいじる
step5
日本語化する

ブログ主

※(秒では終わら)ないです。

 

deviseを使ってログイン認証の機能を実装する方法

プロジェクトを作成する

$ rails new line --skip-coffee

まずアプリケーションを作成します。

(後述する記事の事前作業のため、coffee.scriptを生成しないようにしています)

gemをインストール

gem 'devise'

Gemfileに上のように追記しgemをインストールしてあげます。

bundle install

deviseの設定

rails g devise:install

上のようにコマンドを叩いてあげると、以下のような長ったらしい説明が表示されます

 

Running via Spring preloader in process 27916
      create config/initializers/devise.rb
      create config/locales/devise.en.yml
===============================================================================

Depending on your application's configuration some manual setup may be required:

  1. Ensure you have defined default url options in your environments files. Here
     is an example of default_url_options appropriate for a development environment
     in config/environments/development.rb:

       config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

     In production, :host should be set to the actual host of your application.

     * Required for all applications. *

  2. Ensure you have defined root_url to *something* in your config/routes.rb.
     For example:

       root to: "home#index"

     * Not required for API-only Applications *

  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
     For example:

       <p class="notice"><%= notice %></p>
       <p class="alert"><%= alert %></p>

     * Not required for API-only Applications *

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

       rails g devise:views

     * Not required *

===============================================================================

これがどういうことか噛み砕いて説明すると、

メールで必要になる認証リンクのURLを設定してね

トップページのルーティングを設定してね

アラートを設置してね

見た目を変えたかったらビューを作ってね

こういうことです。

ブログ主

どれもすぐに終わるよ

まずURLの設定とアラート達の設置をしていきます。

認証リンクのURLの設定

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

config/environments/development.rbに上のように追記してあげます。

次にログインメッセージなどを表示するためにアラート達を設定していきます。

 

アラートの設置

<%if flash.notice%>
  <p class="notice"><%= notice %></p>
<%end%>
<%if flash.alert%>
  <p class="alert"><%= alert %></p>
<%end%>

以上をapplication.html.erbのbodyの直下辺りに設置してあげます。

<%=yield%>の前ぐらいだね

ソロモン

 

認証モデルを作るよ

$ rails g devise user

ログインやらなんやらをするモデルを生成します。

この場合userモデルでパスワードやメールアドレスなどを扱うわけですね。

ルーティングをいじる

Rails.application.routes.draw do
  devise_for :users
  devise_scope :user do#トップページをログイン画面に
    root "users/sessions#new"
  end
end

次に、トップ画面をログイン画面にしたいので上のようにroutes.rbに記述してあげます。

classApplicationController < ActionController::Base
  def after_sign_in_path_for(resource)
    "(ログイン後に遷移させたいページ)" 
  end
end
そしてapplication_controller.rbに上のようにメソッドを追加してあげます。

ブログ主

ログイン後に遷移したいURLも描いてあげてね

 

$ rails db:migrate

そしてマイグレーションを実行してあげればOK。

 

localhost:3000がログイン画面になってるはずです⸝⸝- ̫ -⸝⸝

ひとまずこれで終わりっ

deviseを日本語化したい場合

「英語だと見辛いンゴ…」という場合があるかもしれませんが、このdeviseはめちゃ簡単に日本語化することができます。

gem 'devise-i18n'
gem 'devise-i18n-views'
$ bundle install

まず上のgemをインストールしてあげます。

 

require_relative 'boot'
require 'rails/all'


# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)


module Line
  class Application < Rails::Application
  # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 5.2
    config.i18n.default_locale = :ja #追記


(省略)

そしたらconfig/apprication.rbに「config.i18n.default_locale = :ja」を追記します

 

rails g devise:views:locale ja

最後にこのコマンドを叩いてあげれば完了です。

無事に日本語化されてます⸝⸝- ̫ -⸝⸝

お疲れ様!

ソロモン

 

色々カスタマイズしたい時は

「見た目が気にくわない…マジもう無理…」という方向けに。

それぞれ以下のコマンドを叩いてあげれば専用のビューが生成されカスタマイズすることができます。コントローラーも。

ビューをカスタマイズしたい場合

rails g devise:views

 

コントローラーをカスタマイズしたい場合

rails g devise:controllers users

以上になります。

今回は簡単なログイン認証機能を実装しただけですが、deviseで出来ることはまだまだ山ほどあるので勉強していきたいところ…

参考になれば幸いです!では⸝⸝- ̫ -⸝⸝

参考になったらシェアしよう

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA