【Rails】Deviseを使用したユーザー登録認証メールの設定
Deviseのインストールやログイン周りの設定は既に完了している前提。
ユーザー登録時に、登録したメールに認証用のリンクを送信し、本当にメールが合致するかどうかの認証を作ってみます。
user.rbに追記
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable, :omniauthable, :confirmable
:confirmableを追記する。
カラムの追加
confirmation_token、confirmed_at、confirmation_sent_at、unconfirmed_email
の4つがusersカラムにない場合は追加する。
$ rails g migration add_confirmation_token_to_users confirmation_token:string
$ rails g migration add_confirmed_at_to_users confirmed_at:datetime
$ rails g migration add_confirmation_sent_at_to_users confirmation_sent_at:datetime
$ rails g migration add_unconfirmed_email_to_users unconfirmed_email:string
メールの設定
メールを送信するにはSMTPサーバーを設定しなければいけないので、とりあえずGmailを使って作ってみる。
認証用のメールはここで設定したGmailから送られてくることになります。
config/initializers/devise.rb
config.mailer_sender = "Gmailのアドレス"
config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } config.action_mailer.raise_delivery_errors = true config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => "smtp.gmail.com", :port => 587, :user_name => "Gmailアドレス", :password => "Gmailパスワード", :authentication => :plain, :enable_starttls_auto => true }
Githubに上げるときは公開されてしまうので環境変数などで対処する。
サーバーを再起動します。
Gmailの設定
安全性の低いアプリケーションのアクセス という設定はオフにする必要がある。
https://support.google.com/accounts/answer/6010255
それと二段階認証が有効になっていると解除する必要があるみたいです。