読者です 読者をやめる 読者になる 読者になる

人生のヒント

私が経験したことが、誰かの人生のヒントになればと願い書きます。

Ruby On Railsでdeviseを使って認証画面を作る方法(メールアドレス)

RubyOnRails devise 認証
スポンサーリンク

https://camo.githubusercontent.com/b1c21cc10f2f94857dea5135fe55f2e4d451e028/68747470733a2f2f7261772e6769746875622e636f6d2f706c617461666f726d617465632f6465766973652f6d61737465722f6465766973652e706e67

前回、当ブログでメール送信をできるように記事を書きました。

life.hint.jp.net

deviseは、ユーザ認証機能をRuby On Railsで簡単に実装させることが出来るモジュールです。

ユーザアカウントをTwitter IDでも出来ますが、今回はメールアドレスで認証する手順を書きます。

 

 以下URLを参考にしました。

https://github.com/plataformatec/devise

http://qiita.com/cigalecigales/items/73d7bd7ec59a001ccd74

 

1.deviseの設定

rootでログインしたことを想定してます。以下コマンドを実行します。

# su - rails

$ cd work/foo

$ vi Gemfile

 Gemfileに以下の記述を追記します。

gem 'devise'

以下コマンドを実行します。ログインユーザを管理するためのAdminモデルを作ります。

$ bundle install

$ rails g devise:install

$ rails g devise:views

$ rails g devise Admin

$ rake db:migrate

$ vi app/views/layouts/application.html.erb

 app/views/layouts/application.html.erb ファイルの<body>タグ配下に下記を追記します。

<header>
<nav>
<% if admin_signed_in? %>
Logged in as <strong><%= current_admin.email %></strong>.
<%= link_to 'プロフィール変更', edit_admin_registration_path %>
<%= link_to 'ログアウト', destroy_admin_session_path, method: :delete %>
<% else %>
<%= link_to 'サインアップ', new_admin_registration_path %>
<%= link_to 'ログイン', new_admin_session_path %>
<% end %>
</nav>
</header>

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

 

下記コマンドを実行します。

$ vi app/controllers/users_controller.rb

app/controllers/users_controller.rb ファイルの

class UsersController < ApplicationController配下に以下を追記します。

before_action :authenticate_admin!

 

下記コマンドを実行します。

$ vi config/routes.rb

config/routes.rbファイルの「devise_for :admins」の下に追記する。

devise_scope :admin do
  get '/admins/sign_out' => 'devise/sessions#destroy'
end

root 'users#index'

下記コマンドを実行します。

$ vi config/initializers/devise.rb

config/initializers/devise.rb ファイルの「config.mailer_sender = 」の箇所を「config.mailer_sender = "送信元メールアドレス"」に変更します。

 

下記コマンドを実行します。

$ /etc/init.d/unicorn restart

 

2.ログインユーザの作成

下記コマンドを実行します。

$ vi db/seeds.rb

db/seeds.rb ファイルに下記を追記します。

Admin.find_or_create_by(id: 1) do |user|
  user.email = 'メールアドレス'
  user.password = 'パスワード'
end

 

下記コマンドを実行します。

$ rake db:seed

 

3.動作確認

Webブラウザで、http://FQDN/usersにアクセスします。

ログイン画面が表示されるため、登録したメールアドレスとパスワードで認証をしてログインできることを確認します。

「Forgot your password?」でパスワード変更URLの発行をして、メールが届くことを確認します。

まずは、その2点が確認できたら、とりあえずOKです。他にも確認する必要があることがあれば、確認してください。

 

4.まとめ

deviseは、色々オプションがあります。

とりあえず今回は、認証ができるところまで実装しましたが、オフィシャルサイトをはじめとしたサイトを参考にして設定していっていただければと思います。