メインコンテンツに移動
ホーム

古松

メインナビゲーション

  • ホーム
  • ビデオ
  • ご連絡

パンくず

  • ホーム
  • Drupal 8 : ログイン失敗でアカウントがブロックされた時の緊急対応

Drupal 8 : ログイン失敗でアカウントがブロックされた時の緊急対応

モジュール(flood)がインストールされた場合にログイン失敗が記録される

  • Drupal8がモジュール(flood)がコアーとして、初期インストール、有効化されています
  • ユーザーログイン5回以上失敗すると、ユーザーアカウントがブロックされることになります
    There have been more than 5 failed login attempts for this account. It is temporarily blocked. Try again later or request a new password.
    

    ログイン失敗よりアカウントがブロックされ

  • 時間が経てれば自動にリセットされるようです。(どのぐらい時間を経てればよいかは不明です)
  • このユーザーのパスワードを変更して、再度ログインができます

Floodテーブルのデータ削除してアカウントのブロック解除

  • 直接にDBへアクセスして、floodテーブルを確認します。その中に、ユーザーアカウントIDが含まれるログイン失敗情報があります
  • floodテーブルのデータを全部削除すればよいです
  • cashe_entityテーブルのデータも全部削除します

 

Drupal8 : エラーが発生時にキャッチされないことがしばしばあって、注意する必要がある

Drupal8がエラーをキャッチしないことがよくあります

  • デバッグモードでないと、いろいろなエラーがキャッチされなく、そのままスローされてしまい、システムログファイルにも残らず、わからなくなります
    • デバッグモード:例、xdebugを有効化にして、xdebug.show_exception_trace = true を設定すればエラーがDrupalの画面に表示されます
  • 例:Drupal-8.8.5のログインすると、VCCodeのデバッグモードで以下のエラーが表示されます
    • Exception has occurred.
      Drupal\Core\Database\DatabaseExceptionWrapper: SQLSTATE[42S02]: Base table or view not found: 1146 Table '2drills-d8.flood' doesn't exist: SELECT 1 FROM {flood} LIMIT 0, 1; Array
      (
      )
      Drupal8にキャッチされないエラー:flood
    • なぜか、Floodというテーブルがないようです
    • Floodは、Drupal7時にあるセキュリティ関連モジュール:Floodのことから出たと思います。Drupal8が最初このモジュールをコアーに編入したが、いつの間にかこれモジュールをコアーから外したようです。外した時に、コアーのところに、Floodモジュールのコードがそのまま残っていて、Floodロジックが作動したときに、エラーが発生しました。

アンキャッチされたエラーがそのまま放置か、関連モジュールの導入

  • この問題では、関連モジュールの動作でエラーを引き起こしましたが、そのままにしてDrupal8に問題はなさそうです
    • エラーをスローしたが、最後ではキャッチしていないため、なんの問題を生じませんでした
  • 上記モジュール:Floodがコアーから外されたようで、実際に別のモジュール:Flood Settingが同じ機能を果たしています。このモジュールをインストールすれば、上記エラーは発生しませんでした。
    • Flood SettingsがFloodテーブルをDBに作成したので、上記エラーが発生しなくなります
    • Floodのロジックは依然作動していて、パフォーマンスに影響は多少あるでしょう。このモジュールをインストールしたといって、問題解決ではありません

drupal8 : Adminアカウントのパスワード忘れの緊急対応方法

Adminアカウントのパスワード忘れ

  • Adminアカウントのパスワード忘れた場合、「パスワード再設定」(/user/password)画面でAdminアカウントの名前か、メールアドレスを入力して、パスワード再設定リンクを発行してもらえますパスワード再設定画面
  • Adminアカウント名、Mailアドレスが忘れた場合に、直接にDBへアクセスして、users_field_dataテーブル上に記録されたアカウント名、Mailアドレスを参照することができます
  • アカウント名、またはMailアドレスを「パスワードを再設定」フォームに入力して、送信ボタンをしても、パスワードの再設定メールが来ないケースもあります。このケースでは以下の方法で対応します

直接にパスワードを生成してDBに保存

  • DrupalのパスワードをHashをかけて暗号化しています。Hashしたパスワードでは複合化することはできません
  • 以下のステップで、新しいパスワードをHashで暗号化してDBに保存、キャッシュのクリアをすればログインはできるようになります
    • Webサーバーにログインして、Drupalのルートディレクトリに入り、以下のコマンドで新しいパスワードのHashコードを取得
      php core/scripts/password-hash.sh "NewPassword" // 新パスワードを NewPasswordに

      新パスワードのHashコード作成

    • 生成されたパスワードのHashコードをコピーして、users_field_dataのAdminユーザーのpassフィールドに更新、保存します
    • DBにあるcache_entityテーブルのデータをクリアします
    • DBにあるfloodテーブルのデータをクリアします(ログイン失敗情報のクリア)

検索フォーム

カテゴリ別

  • laravel
  • drupal
  • javascript
  • windows
  • html
  • mysql
  • php
  • apache
  • css
  • SEO
  • video
  • wordpress
  • linux
  • python
  • Electron
  • Visual Studio Code

google ads