この記事は3分30秒で読めます。

みなさん。こんにちは、eccuberの中村です。
あっという間に12月となり、2020年も残すところ、1ヶ月となってしまいました。早いですね。。。

突然ですが、皆さんは管理画面のパスワードを忘れてしまい、焦った経験は、ございますでしょうか。
ECCUBEは、パスワードを暗号化してDBに登録されております。
また、管理画面のログイン画面にはパスワードの再設定機能などはないため、忘れてしまうとログインができなくなります。

今回は、ECCUBE3系において、管理画面のパスワードを忘れてしまった時の対象方法をご説明させていただきたいと思います。
2系、4系については、下記をご覧ください。

▼関連記事:ECCUBE4系管理画面のパスワードを忘れたときの対処方法
https://ec-cuber.jp/news-column/column21/

▼関連記事:ECCUBE2系管理画面のパスワードを忘れたときの対処方法
https://ec-cuber.jp/news-column/column02/

概要

管理画面のパスワードを忘れてしまった場合は、管理画面上での再設定する方法ないですが、下記の二つの方法で解決が可能となります。

  1. DB上で直接暗号化されたパスワード(ハッシュ)を修正する
  2. パスワードなしでログインできるようにし、一部ファイルを修正後、管理画面から自分のパスワードを変更して、登録し直す

前者の方(ハッシrュの修正)は少し難しく、別の問題が発生してしまう可能性があるので、今回は、②の方法で行いタイト思います。

準備

  • WEBサーバー接続情報
  • DB接続情報
  • クライアントツール(自分が操作しやすいもの)
  • 関係者(サイト管理者)への調整
    ※対象の作業を行うと、一次的に管理画面に誰でも入れるようになるため、関係者に時間を通告し、対象の時間に管理画面へのIPアクセス制限とメンテナスモードにするなどの対応をしてください。
  • DBにアクセスし、dtb_memberのpasswordに記載されている英数字などをメモ

手順

下記が手順の一覧となります。

  1. バックアップを取る
  2. パスワードなしで管理画面にログインできるようにファイルを修正(コメントアウト)し、ログイン
  3. ログイン確認後コメントアウトしたところを戻す
  4. 対象メンバーのパスワードを再設定

<対象ファイル>
vendor/symfony/security/Core/Authentication/Provider/UserAuthenticationProvider.php

手順1

〇 対象ファイルのバックアップを取る
 
※こちらは、修正とは直接関係ないですが、意図しない操作で不必要な箇所を上書きした場合などに備えて、可能な限り実施するようにしてくください。

手順2

〇パスワードなしで管理画面にログインできるようにファイルを修正(コメントアウト)し、対象のIDを入力、Passwordは適当なものを入力してログインする

下記ファイルの84行目辺りをコメントアウト
vendor/symfony/security/Core/Authentication/Provider/UserAuthenticationProvider.php

        try {
            $this->userChecker->checkPreAuth($user);
//            $this->checkAuthentication($user, $token);
            $this->userChecker->checkPostAuth($user);
        } catch (BadCredentialsException $e) {
            if ($this->hideUserNotFoundExceptions) {
                throw new BadCredentialsException('Bad credentials.', 0, $e);
            }

            throw $e;

手順3

〇ログイン後、コメントアウトしたところを戻す
※戻さないとパスワードのチェックがされない状態のままとなってしまうので、必ず戻すようにいたしましょう。

        try {
            $this->userChecker->checkPreAuth($user);
            $this->checkAuthentication($user, $token);
            $this->userChecker->checkPostAuth($user);
        } catch (BadCredentialsException $e) {
            if ($this->hideUserNotFoundExceptions) {
                throw new BadCredentialsException('Bad credentials.', 0, $e);
            }

            throw $e;

手順4

〇対象メンバーのパスワードを再設定
ログインに成功しましたら、画面右上のパスワード変更からパスワードを再設定してください。
再設定しましたら、 ログアウトして、設定したパスワードでログインできれば成功です。
※念のため
また、DBに接続していただき、dtb_memnerのpasswordのところが<準備>で確認した英数字とは異なる羅列でパスワードとは異なるもので登録されていれば、暗号化されて再設定されていることになります。

変更前
変更後

以上となります。設定お疲れ様でした

▼関連:EC-CUBEの標準機能について
https://ec-cuber.jp/eccube4/

弊社では、ECサイトの構築から保守・コンサルティングなど幅広く、対応しております。下記からお気軽にお問合せください。

まずはお気軽に何でもご相談ください。
▼問合せフォームから相談してみる。
 https://ec-cuber.jp/contact-us/
▼メールで相談してみる。
 sales_ec@ids.co.jp
▼電話で直接相談してみる。
 03-6386-3652