railsで確認メール認証を実装する
簡単にユーザ認証ができるdeviseを使用し、以下の様な認証を設定する。
サインアップ、ログイン共に「メールアドレス」「password」のみで、
サインアップ後、記入メールアドレスへ確認メールを送信する設定を行う。
このメールアドレス内のURLをクリックしないと認証通過しない?(未確認、のちに確認する)
制作したプロジェクトへ移動し、’devise’をGemに追加する。
$ vim Gemfile
gem ‘devise'
バンドルインストールを実行
$bundle install
railsプロジェクトへdeviseを追加する
$ bundle exec rails generate devise:install
config/environments/development.rbの編集を行う。
各種メールの設定を行っている。
以下を追加
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => 'smtp.gmail.com',
:port => 587,
:authentication => :plain,
:user_name => ‘***@gmail.com’, 送信するメールアドレス
:password => ‘*****’ #password
}
config.action_mailer.raise_delivery_errors = falseをコメントアウト
# config.action_mailer.raise_delivery_errors = false
app/views/layouts/application.html.erbのボディー内を編集する
<body>
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
<%= yield %>
</body>
モデルを作成する
$ bundle exec rails generate devise User
db/migrate/nnnnnn_devise_create_users.rbのconfirmableのコメントを外す。
## Confirmable
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email # Only if using reconfirm able
インデックスも一応有効にしておく
add_index :users, :confirmation_token, unique: true
マイグレートを実行
$ bundle exec rake db:migrate
app/models/user.rbのdeviseメソッドの引数としてconfirmableを追加する。
devise :database_authenticatable, :registerable,:confirmable,
:recoverable, :rememberable, :trackable, :validatable
最後にビューを生成します。
$ bundle exec rails generate devise:views
一応これで確認メールによる認証を行うことが可能になります。
ただし、Gmailを使用する場合、セキュリティに引っかかってエラーとなるため、
Googleから送られるエラーメール内にあるセキュリティ設定を行いましょう。
さすればエラー消えます。
--------参考文献---------
Rails4 Devise導入
http://qiita.com/azusanakano/items/a51aef1347865a452fcc
■Gaku様の一言
最近お仕事が忙しく(最近というかいつもだけど)、railsに触れない日々が続いております。
ただ、モチベーションを保つためにMacBook airを購入し、毎日わくわくしている今日このごろです。
毎日、睡眠は削らず1時間は実装したいっすね〜。
土日は1日中してるんですがね。。。学生の頃に戻りたいっす(´・ω・`)