[路轨]如何安装reCAPTCHA


目标

ezgif.com-video-to-gif.gif

开发环境

?Ruby:2.5.7
Rails:5.2.4
?无业游民:2.2.7
VirtualBox:6.1
操作系统: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.设置サイトキーシークレットキー环境变量

①引入了"ruby\\'dotenv-rails \\'"

ruby文件

1
gem 'dotenv-rails'

终奌站

1
& bundle

②直接在应用程序下创建一个" .env"文件。
*移至应用程序目录,然后执行以下命令

终奌站

1
$ touch .env

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

.env编辑文件

.env

1
2
3
# 追記
RECAPTCHA_SITE_KEY = 'サイトキー'
RECAPTCHA_SECRET_KEY = 'シークレットキー'

④编辑.gitignore文件

.gitignore

1
/.env # 追記

2.创建或编辑reCAPTCHA配置文件

终奌站

1
$ touch config/initializers/recaptcha.rb

回收站

1
2
3
4
5
# 追記
Recaptcha.configure do |config|
  config.site_key = ENV["RECAPTCHA_SITE_KEY"]
  config.secret_key = ENV["RECAPTCHA_SECRET_KEY"]
end

3.编辑resistration_controller.rb

resistanceration_controller.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
# 追記
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.编辑视图

抗药性/ new.html.slim

1
2
/ 追記
= recaptcha_tags

5.验证消息的日语本地化

①ruby介绍

ruby文件

1
2
gem 'rails-i18n'
gem 'devise-i18n'

终奌站

1
$ bundle

②编辑application.rb

application.rb

1
2
3
4
5
6
module Bookers2Debug
  class Application < Rails::Application
    config.load_defaults 5.2
    config.i18n.default_locale = :ja # 追記
  end
end

③创建或编辑devise.ja.yml文件

devise.ja.yml

1
2
3
4
ja:
  recaptcha:
    errors:
      verification_failed: 'reCAPTCHA認証に失敗しました。'