ECCUBE3.0.15でreCaptchaをログイン画面に導入する

reCaptchaとは

“あなたはロボットではありません”にチェックを入れたらGoogleが発行したトークンをサーバ側でチェックすることで、悪意のあるプログラムでのログインを防ぐ役割があります。
reCaptchaの参考画像
recaptchaの参考画像です
Google reCapatch本家サイトへのリンク

Eccube3によるreCaptcha導入がなぜ難しいか

本来、reCaptchaの導入はGoogleが用意してくれたスクリプトやHTMLを貼り付けるだけで動作するようになっています。
ただ、ECCUBE3に関しては、ログイン処理でSilexのSecurityServiceProviderを使用しているため、サーバ側でreCaptchaのトークン確認用プログラムを書けばいいのか分からないという状況になりました。
ログインを処理する部分のController及びActionが存在しないのです。
ですので、本記事はサーバ側での処理方法しか書きません。

導入方法

/src/Eccube/Repository/CustomerRepository.phpにある、loadUserByUsernameメソッド内に記述します。
loadUserByUsernameメソッドは、ログイン画面で入力されたメールアドレスがCustomerテーブルに存在するかどうかを確認するメソッドです。
ここにreCaptchaの確認処理を書いて、一致しなかった場合は、例外投げるようにすればいいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

山中 雅彦

大分でWebシステム受託開発会社のバックエンドエンジニアとして働いてます。 Laravel5でのシステム開発を中心に仕事してます。 高校卒業後に鉄鋼会社で電気整備の仕事をする傍ら、HTML、CSS、JS、PHP、MySQL、サーバ関連技術を独学で勉強。 2017年9月にWebシステム開発会社に入社し、システム開発をしています。 Web技術全般が好きなPHPerです。