[Rails] Devise|メールアドレス認証を実装する

Webサービスには必須のメールアドレス認証.

Deviseではこの機能も簡単に実装することができます (今回はうまくいきませんでしたが).

SPONSORED LINK

Confirmableを追加する

モデルのdeviseの設定部分に :confirmable を追加します.

devise :database_authenticatable, :registerable,
       :recoverable, :rememberable, :validatable, :confirmable

Confirmable用のカラムを追加する

具体的には,

confirmation_token

confirmed_at

confirmation_sent_at

unconfirmed_email

の4つです.

$ bundle exec rails g migration AddColumnsToUsers

class AddColumnsToUsers < ActiveRecord::Migration[5.2]
  def change
    ## Confirmable
    add_column :users, :confirmation_token, :string
    add_column :users, :confirmed_at, :datetime
    add_column :users, :confirmation_sent_at, :datetime
    add_column :users, :unconfirmed_email, :string

    add_index :users, :confirmation_token, unique: true
  end
end

$ bundle exec db:migrate

SPONSORED LINK

送信元メールアドレスを設定する

確認メールを送信するには,どうやってメールを送信するかを設定する必要があります.

まずは,config/initializers/devise.rbconfig.mailer_sender に送信元メールアドレスを設定.

config.mailer_sender = ENV['GOOGLE_MAIL']

次に,config/emvironments/development.rb にメールアドレスの設定を追加.

今回は,Gmailを使う場合の設定例です.

# Set config for Gmail
config.action_mailer.smtp_settings = {
  :enable_starttls_auto => true,
  :address => 'smtp.gmail.com',
  :port => 587,
  :domain => 'smtp.gmail.com',
  :user_name => ENV['GOOGLE_MAIL'],
  :password => ENV['GOOGLE_PASS'],
  :authentication => 'login',
}

ユーザ登録してみる

ここまで設定したら,実際にユーザ登録してメールが送信されるかどうかを確認します.

が,ぼくはメールが届きませんでした.

ログを見る限り,メールの送信はできてようなので,Gmailの設定が間違っているのかもしれません.

それでも,Confirm URLにアクセスしてメール認証が実装できていることを確認しました.

メールが届かなかったことだけが心残りですが,今回はよしとします.


コメントを残す

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