Labo

EC-CUBE3 分室

【3.0.15】管理者パスワードを忘れた時に管理画面にログインする方法

2017年11月12日 / 投稿者名:chiharu


さて、一旦プラグインに関しては終了です。
今回からは改めて気になった内容を確認して行きたいと思います。
 
 
—————————————————————————
 
パスワードの変更に関しては以下の記事も参照してください。
【3.0.15】管理者パスワードを忘れた時に管理画面にログインする方法(2)
 
—————————————————————————

 
 
今回はちょっとした小ネタです。
当サイトのブログは EC-CUBE の2系と3系で続けています。
2系の担当者は私とは異なるのですが、2系の内容でいまだに人気の記事があります。
 
その人気記事は以下の内容です。
[EC-CUBE 2.11.4] 管理者パスワードを忘れた時に管理画面にログインする方法
良くあるトラブルではありますので、一度対応方法を確認しておいた方が良いのかもしれません。
折角なので3系での対応方法をここで紹介しておきたいと思います。
 
2系の時もそうですが基本的に強制的にログインを行う形となりますのでログイン状況を確認する部分をコメントアウトする形です。
なお、以下の作業を行うときは元に戻すことを忘れない様に気を付けてください。
 
実際に変更を行うファイルは以下のファイルとなります。
 <インストールフォルダ>/src/Eccube/Application.php
 
上記のファイルの中の initSecurity と云う関数の中の変数を変更する形です。
570行目辺りに該当の変数に関する以下の記述があります。

        $this['security.access_rules'] = array(
            array("^/{$this['config']['admin_route']}/login", 'IS_AUTHENTICATED_ANONYMOUSLY', $channel),
            array("^/{$this['config']['admin_route']}/", 'ROLE_ADMIN', $channel),
            array('^/mypage/login', 'IS_AUTHENTICATED_ANONYMOUSLY', $channel),
            array('^/mypage/withdraw_complete', 'IS_AUTHENTICATED_ANONYMOUSLY', $channel),
            array('^/mypage/change', 'IS_AUTHENTICATED_FULLY', $channel),
            array('^/mypage', 'ROLE_USER', $channel),
        );

 
上記内容は各画面に対してログイン状態を確認して表示「する・しない」を判断する基準となります。
Symfony2 の基本的な機能を使用しているようです。
今回の場合は以下のようにコメントアウトをすることで管理画面へのログイン判定を行わないことが出来ます。

        $this['security.access_rules'] = array(
            array("^/{$this['config']['admin_route']}/login", 'IS_AUTHENTICATED_ANONYMOUSLY', $channel),
//            array("^/{$this['config']['admin_route']}/", 'ROLE_ADMIN', $channel),
            array('^/mypage/login', 'IS_AUTHENTICATED_ANONYMOUSLY', $channel),
            array('^/mypage/withdraw_complete', 'IS_AUTHENTICATED_ANONYMOUSLY', $channel),
            array('^/mypage/change', 'IS_AUTHENTICATED_FULLY', $channel),
            array('^/mypage', 'ROLE_USER', $channel),
        );

 
上記の対応を行う事でログインすることなく管理画面を表示/操作することが出来ます。
ちなみに簡単に説明すると以下の形になります。
 「^/{$this[‘config’][‘admin_route’]}/」 → 管理画面のルートフォルダから始まる場合
 「ROLE_ADMIN」 → 管理者ログインしている場合
 
・・・これ使い方をよく考えれば会員専用ページも簡単に作成できそうですね。
まぁ、すでに誰かが記述しているとは思いますのでちょっと調べてみたいと思います(笑)
 
 ・
 ・
 ・
 
上記の設定を行うと実際に管理画面のログインに関してはある程度有効ですが管理者情報の変更が出来ませんね。
ページを表示する権限自体は問題無いようですが、変更を行うページがエラーで表示されません。
その為、定番のログインせずに管理画面からの強制パスワード変更が出来ない様です。
 
ログインしていない状況の為、管理者情報が取れない為でしょうか。
次回辺りは管理者変更が出来ないか確認して見たいと思います。
 
と云うことで今回は終了とさせて頂きます。

コメントを残す

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

* Copy This Password *

* Type Or Paste Password Here *

*

コメント欄にコードを挿入したい場合は、[php][/php] を使ってください。