baserCMS フロント認証のログインURLを変更する

baserCMS フロント認証のログインURLを変更する

以前に「baserCMS フロント認証機能を使ったメンバー専用ページ作成時のケーススタディ」という記事で取り上げたフロント認証機能を使ったメンバー専用ページのログインURLをセキュリティ対策も兼ねて変更する手順を紹介したいと思います。
本記事も前回記事と同様、baserCMS4系の場合です。

まずは、条件および手順のおさらいから。詳細は、あらためて「baserCMS フロント認証機能を使ったメンバー専用ページ作成時のケーススタディ」を参照ください。

条件および手順のおさらい

認証をかけたいメンバー専用ページのURLを仮に/members_topと/members_blogとして、 以下の手順で作業します。

  1. 管理者権限で管理システムにログインし、メンバー専用ページにアクセス可能なメンバーのためのユーザーグループを仮に「members」として作成します。

  2. setting.phpにフロント認証機能を設定するためのコードを記述します。
    baserCMS4系の/lib/Baser/Config/setting.phpに記載されている「認証プレフィックス設定」の関する記述部分(520行目辺りから578行目辺り)を/app/Config/setting.phpにコピーして、'front'の認証プレフィックス設定のコメントアウトを外します。

  3. 管理者権限で管理システムにログインし、事前に作成されたユーザーグループ「members」について、表示された認証プレフィックス設定項目の「フロント」のチェックボックスをチェックし、有効にします。

  4. /app/Controller/AppController.php に認証チェックと非認証時のリジェクト処理のためのコードを記述します。

  5. ページビューキャッシュをオフにしないと、認証がかかっていてもキャッシュされたページが表示されてしまいます。そのため、/app/Config/install.php のキャッシュ設定を確認し、Configure::write('Cache.check', true); なら false に変更。キャッシュ設定の記述が見当たらなければ、Configure::write('Cache.check', false); の記述を加えます。

メンバー専用ページのログインURLを(セキュリティ対策も兼ねて)変更する手順

上記のおさらいの手順が完了している前提で、ユーザーグループ「members」に登録されたユーザーアカウントでメンバー専用ページのログインURLの /users/login にアクセスして、フロント認証が表示されること、ログイン後メンバー専用ページが表示できることが確認できれば、いよいよ本題です。

ここで、フロント認証機能を使ったメンバー専用ページのログインURLの /users/login を、例えば /members/login に変更するとします。

まず、/app/Config/routes.php にフロント認証のログインURLのルーティングを変更するため、require BASER_CONFIGS . 'routes.php'; の前に以下のコードを記述します。

// フロント認証のログインURLのルーティングを変更(/users/loginを/members/loginに変更)
Router::connect('/members/login', ['controller' => 'users', 'action' => 'login']);

次に、/app/Config/setting.phpに記述した 'front' => [] 内の 'loginAction' => '/users/login', 'logoutAction'=> '/users/logout',を以下のように修正します。


    // フロント(例)
     'front' => [
          'name'            => __d('baser', 'フロント'),
          // メンバー専用サイトのトップ画面のURL
          'loginRedirect'   => '/members_top',
          // ログイン画面タイトル
          'loginTitle' => __d('baser', '会員ページログイン'),
          'userModel'       => 'User',
          'loginAction' => '/members/login',
          'logoutAction'=> '/members/logout',
          'toolbar'     => true,
          // コピー元は 'User' ですが、'Admin' に変更
          'sessionKey'  => 'Admin'
    ]

以上で、作業は完了です。
設定が反映されない場合は、お約束のキャッシュをクリアしてみてください。

参考にさせていただいたページ:

CakePHPのルーティング設定について - @ukyoda

コメント


コメントする


N8Yj6K