LoginSignup
0
2

More than 3 years have passed since last update.

【Rails】reCAPTCHAの導入方法

Posted at

目標

ezgif.com-video-to-gif.gif

開発環境

・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

前提

下記実装済み。

Slim導入
ログイン機能実装

reCAPTCHAを登録

1.下記リンクにアクセス

reCAPTCHA

2.Admin consoleをクリック

スクリーンショット 2020-06-11 19.59.07.png

3.下記画像の様に設定し、送信をクリック

スクリーンショット 2020-06-11 20.02.04.png

スクリーンショット 2020-06-11 20.02.09.png

4.サイトキーシークレットキーをコピーして控えておく

スクリーンショット 2020-06-11 20.07.55.png

5.

実装

1.サイトキーシークレットキーを環境変数化

①「gem 'dotenv-rails'」を導入

Gemfile
gem 'dotenv-rails'
ターミナル
& bundle

②アプリケーション直下に「.env」ファイルを作成
※アプリケーションのディレクトリに移動してから下記コマンドを実行

ターミナル
$ touch .env 

スクリーンショット 2020-06-02 11.32.54.png

.envファイルを編集

.env
# 追記
RECAPTCHA_SITE_KEY = 'サイトキー'
RECAPTCHA_SECRET_KEY = 'シークレットキー'

.gitignoreファイルを編集

.gitignore
/.env # 追記

2.reCAPTCHAの設定ファイルを作成・編集

ターミナル
$ touch config/initializers/recaptcha.rb
recaptcha.rb
# 追記
Recaptcha.configure do |config|
  config.site_key = ENV["RECAPTCHA_SITE_KEY"]
  config.secret_key = ENV["RECAPTCHA_SECRET_KEY"]
end

3.resistration_controller.rbを編集

resistration_controller.rb
# 追記
prepend_before_action :check_captcha, only: [:create]

private

  # reCAPTCA認証を行わないとサインアップ出来なくし、バリデーションメッセージを表示する
  def check_captcha
    self.resource = resource_class.new sign_up_params
    resource.validate
    unless verify_recaptcha(model: resource)
      respond_with_navigational(resource) { render :new }
    end
  end

4.ビューを編集

resistrations/new.html.slim
/ 追記
= recaptcha_tags

5.バリデーションメッセージを日本語化

①Gemを導入

Gemfile
gem 'rails-i18n'
gem 'devise-i18n'
ターミナル
$ bundle

application.rbを編集

application.rb
module Bookers2Debug
  class Application < Rails::Application
    config.load_defaults 5.2
    config.i18n.default_locale = :ja # 追記
  end
end

devise.ja.ymlファイルを作成・編集

devise.ja.yml
ja:
  recaptcha:
    errors:
      verification_failed: 'reCAPTCHA認証に失敗しました。'
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2