gaku様の備忘録

プログラミングとか、夢と現実と理想とか。。。

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日中してるんですがね。。。学生の頃に戻りたいっす(´・ω・`)