LaravelでreCAPTCHAを導入してみる(改定版)

2024.08.09 09:00
2024.08.09 10:00
LaravelでreCAPTCHAを導入してみる(改定版)

以前「LaravelでreCAPTCHAを導入してみる」という記事を書きましたが、書き方が変わったので、改定版を作ってみました。

How to protect your Laravel forms with Google reCAPTCHA V3

まずはライブラリをインストール

composer require josiasmontag/laravel-recaptchav3

次に.envに以下を追記

RECAPTCHAV3_SITEKEY=サイトキー
RECAPTCHAV3_SECRET=シークレットキー

設定ファイルを書き出します。

php artisan vendor:publish --provider="Lunaweb\RecaptchaV3\Providers\RecaptchaV3ServiceProvider"

ヘッダに以下を追記。

{!! RecaptchaV3::initJs() !!}

フォームタグの直下に以下を追記。

{!! RecaptchaV3::field('contact') !!}

「contact」の部分は適宜変更します。サイト内の他のフォームと被ってなければOK。

次にバリデーションに追加。

'g-recaptcha-response' => 'required|recaptchav3:contact,0.5'

contactの部分は、fieldで指定した値を入れ、0.5は許容スコアを入れます。
次にメッセージを指定。

    public function messages()
    {
        return [
            ...省略
            'g-recaptcha-response.required' => '処理ができませんでした',
            'g-recaptcha-response.recaptcha' => '処理ができませんでした.',
        ];
    }

最後に項目名を指定。

    public function attributes()
    {
        return [
            ...省略
            'validation.recaptchav3' => '投稿スコア',
        ];
    }

それぞれのメッセージはお好みで。
だいぶ変わりましたね。

今回は以上です!