Open2
reCAPTCHの導入
/Gemfile
gem 'recaptcha'
いつものを実行
$ bundle install
JavaScript API を読み込みます。
/application.html.erb
<%= javascript_include_tag "https://www.google.com/recaptcha/api.js" %>
RECAPTCHA_SECRET_KEY=********************************
RECAPTCHA_SITE_KEY=********************************
以下をアクションの最初等に追記する
contoroller
unless verify_recaptcha(action: 'login', minimum_score: 0.5)
Rails.logger.error "WARNING: illegal reCAPTCHA request from \"#{request.remote_ip}\""
flash.now[:danger] = "ロボットの可能性があります。再度お試しください"
render 'new', status: :unprocessable_entity
return
end
フォームに追記する
form
<%= recaptcha_v3(action: 'login') %>
参考URL
↓
アクション名の確認
具体的なあれそれ
/views/sessions/new.html.erb
<%= recaptcha_v3(action: 'login') %>
/controllers/sessions_controller.rb
# reCAPTCHAの検証
return unless verify_recaptcha_and_handle_error(
action: 'login', render_template: 'new')
/controllers/application_controller.rb
include RecaptchaHelper
/helpers/recaptcha_helper.rb
module RecaptchaHelper
def verify_recaptcha_and_handle_error(action:, render_template:, minimum_score: 0.5)
unless verify_recaptcha(action: action, minimum_score: minimum_score)
Rails.logger.error "WARNING: illegal reCAPTCHA request from \"#{request.remote_ip}\""
message = "Botだと判断されました。もう一度やり直してください。"
message += "何度やっても上手くいかない場合は、お手数ですが管理者にお問い合わせください"
flash[:danger] = message
render render_template, status: :unprocessable_entity
return false
end
true
end
end
/config/initializers/recaptcha.rb
Recaptcha.configure do |config|
config.site_key = Rails.application.credentials.recaptcha[:site_key]
config.secret_key = Rails.application.credentials.recaptcha[:secret_key]
end