以前、WordPressのプラグインでも紹介した、Googleが提供している人間とロボットのどちらによる操作かを判別するためのセキュリティ強化ツール、CAPTCHA認証機能をLaravelにパッケージを利用して導入する方法をご紹介します。
key
を取得するなどの下準備は、上記の記事で完了しているものとして進めていきます。
Google captcha for Laravelの使い方
こちらのLaravelのパッケージを利用すれば、とても簡単にCAPTCHA認証を導入することができます。
パッケージのインストールと設定
まずは、いつものようにcomposer
コマンドでインストールします。
composer require buzz/laravel-google-captcha
次に、以下をconfig/app.php
のproviders
に追加しますが、Laravel 5.5以降は不要です。
'BuzzLaravelGoogleCaptchaCaptchaServiceProvider',
そして、公開設定をするとconfig
以下にcaptcha.php
の設定ファイルが作成されます。
php artisan vendor:publish --provider="BuzzLaravelGoogleCaptchaCaptchaServiceProvider"
作成されたconfig/captcha.php
を確認したらわかるように、.env
ファイルにGoogleで取得したキーを設定する必要があります。
CAPTCHA_SECRET=[secret-key]
CAPTCHA_SITEKEY=[site-key]
CAPTCHAをフォームに追加する
今回は例として、ログインフォームに追加してみました。
・・・
<div class="form-group{{ $errors->has('g-recaptcha-response') ? ' has-error' : '' }}">
<div class="col-md-6 col-md-offset-4">
{!! Captcha::display($attributes = [], $options = ['lang'=> app()->getLocale()]) !!}
@if ($errors->has('g-recaptcha-response'))
<span class="help-block">
<strong>{{ $errors->first('g-recaptcha-response') }}</strong>
</span>
@endif
</div>
</div>
・・・
Captcha::display()
の箇所以外は他の入力フォームと変わりませんね。
ビュー側(blade)で書くのはこれだけです。
カスタムログインバリデーション
CAPCHA用のバリデーションを追加しますので、validateLogin
メソッドを利用して
まずは、Request
を使用する宣言を追加
use IlluminateHttpRequest;
そして、通常のログインバリデーションの最後CAPCHA用のバリデーションを追加します。
app/Http/Controllers/Auth/LoginController.php
/**
* Validate the user login request.
*
* @param IlluminateHttpRequest $request
* @return void
*/
protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => 'required|string',
'password' => 'required|string',
'g-recaptcha-response' => 'required|captcha'
]);
}
以上で完了です。
その他にも会員登録やお問い合わせフォームなどでも活躍しそうですね!
- Original:https://minory.org/laravel-google-captcha.html
- Source:Minory
- Author:管理者