Laravel 5.5 にreCAPTCHA導入覚え書き

Laravelにスパムの会員登録が急激に増えてきたので、その対策。

完成図は以下。

 

f:id:aquashine:20191126101535p:plain

以下を導入した。

https://github.com/anhskohbo/no-captcha

 

1.SSHでログインして、以下のコマンドを打つ

composer require anhskohbo/no-captcha

完了後、composer.jsonを見たら、以下が追加されている。

    "require": {
        "anhskohbo/no-captcha""^3.1",
 

 

2..envに以下を追加

NOCAPTCHA_SECRET=secret-key
NOCAPTCHA_SITEKEY=site-key

シークレットキーとサイトキーはGoogleのサイトから取得できる

 

※Lravel5.5以上は、php artisan vendor:publish ・・・・などのコマンドは不要

 

3.自分の場合、新規会員登録ページにrecapchaを載せたかったため、register.blade.phpに以下を追記。

<div class="form-group{{ $errors->has('g-recaptcha-response') ? ' has-error' : '' }}">
 <div class="col-sm-6 col-sm-offset-4">
  {!! NoCaptcha::renderJs() !!}
  {!! NoCaptcha::display() !!}
  @if ($errors->has('g-recaptcha-response'))
  <span class="help-block">
   <strong>{{ $errors->first('g-recaptcha-response') }}</strong>
  </span>
  @endif
 </div>
</div>

4.registerController.phpに以下を追記

return Validator::make($data, [
 'name' => 'required|string|max:255',
 'email' => 'required|string|email|max:255|unique:users',
 'password' => 'required|string|min:6|confirmed',
 'g-recaptcha-response' => 'required|captcha',  ←★ここを追記
]);

 

5.エラーメッセージをresources/lang/ja/validation に追記

        'g-recaptcha-response' => 'チェック'
 

 

以上。