このプラグインは、フォームログインの失敗を検知して一定期間内に同一IPから複数回のログイン失敗が発生した場合、以降のログイン処理をブロックします。
- CakePHP >= 3.5
- (任意) CakePHP Authentication plugin 1.x
composer を使用してインストールできます。
以下のようにして、Composer経由でプラグインをCakePHPアプリケーションへ追加します:
composer require nojimage/cakephp-login-attempts
アプリケーションの config/bootstrap.php ファイルへ、次の行を追加します:
(CakePHP 3.6.0 以降) アプリケーションの src/Application.php に、次の行を追加してプラグインをロードします:
$this->addPlugin('LoginAttempts');
(CakePHP 3.5.x 以前) アプリケーションの config/bootstrap.php に、次の行を追加してプラグインをロードします:
Plugin::load('LoginAttempts');
マイグレーションを実行し、データベースへ必要なテーブルを作成します:
bin/cake migrations migrate -p LoginAttempts
Form 認証機能の代わりに LoginAttempts.Form を使用してください。
$this->loadComponent('Auth', [
'authenticate' => [
'LoginAttempts.Form' => [
'fields' => ['username' => 'email'],
'attemptLimit' => 5,
'attemptDuration' => '+5 minutes',
],
],
]);
Authentication プラグインを使う場合:
$service->loadAuthenticator('LoginAttempts.Form', [
'fields' => ['username' => 'email'],
'attemptLimit' => 5,
'attemptDuration' => '+5 minutes',
]);
attemptDuration の間にログイン失敗回数が attemptLimit を超えた場合、ログインを許可しません。
default: 5
attemptDuration の間にログイン失敗回数が attemptLimit を超えた場合、ログインを許可しません。
default: '+5 minutes'
試行回数はこのキー別に保存されます。ログインフォームが複数あり、それぞれ別個に制限を設けたい場合に使用します。
default: 'login'
ログインの失敗回数を記録およびチェックするためのモデルを指定します。
default: 'LoginAttempts.Attempts'