hissyさん
有り難うございます。
サーバ側の設定(RewriteRuleなど)で対処する方法などでも構いませんので、
良い(よりスタンダードな)方法があれば、展開頂けると幸いです。
ログイン画面のURLを変更する方法
2014年12月10日 at 20:54
concrete5での管理画面ログイン用URLが固定URLと成っている為、
第三者にアクセス出来ないよう、URLを変更したいと考えています。
concrete5をインストール後、以下の変更を行ない、
変更したURLでログイン画面へのアクセスとログイン動作は可能と成ったのですが、
この修正対処で、他への不具合が発生しないか、
ご存知の方がいらっしゃいましたら教えて頂けないでしょうか?
-- 環境 --
# concrete5 Version
5.6.3.2
1)DB内情報の更新
テーブル:PagePaths
カラム:cPath
検索条件:`cPath` like '%Login%'
上記で検索したレコードのcPath欄に記載されているパスを
設定したいログイン画面のパスに変更する。
2)configの変更
ファイル:/concrete/config/theme_paths.php
に記載されているログインパスを、設定したいログイン画面のパスに変更する。
$v->setThemeByPath('/login', VIEW_CORE_THEME);
※このファイルは、
/config/theme_paths.php
にコピーしたファイルを編集しても有効に成らなかったので直接編集したのですが、
オーバーライドが出来ないファイルという理解で正しいでしょうか?
3)login.phpの変更(オーバーライド)
ファイル:/concrete/single_pages/login.php
を
/single_pages/login.php
にコピーし、ファイル中のパス記載箇所(10箇所)を
設定したいログイン画面のパスに変更する。
以上、宜しくお願い致します。
タグ:
Re: ログイン画面のURLを変更する方法
2014年12月10日 at 21:28
あ、入れ違いで投稿してしまいました。元の投稿は、DBを直接書き換えていると言うことと、もし問題があった時に戻しにくいというのがちょっとなと思いました。下記の方法であれば、すぐに戻すことができます。
Re: ログイン画面のURLを変更する方法
2014年12月10日 at 21:26
1. /custom_login の作成
/concrete/core/controllers/login.php を
/controllers/custom_login.php にコピー
class Concrete5_Controller_Login を
class CustomLoginController に変更
コード内の /login を /custom_login に変更
/concrete/single_pages/login.php を
/single_pages/custom_login.php にコピー
こちらは内容変更無しでいけると思います
2. シングルページの追加
管理画面のシングルページのページから、custom_loginを追加してください。
3. /custom_login のテーマを変更
/config/site_theme_paths.php を開く
このファイルがシングルページのテーマ変更用のファイルです。オーバーライドできるのですが、ファイル名が違うので注意なのです
下記を追記してください
$v = View::getInstance();
$v->setThemeByPath('/custom_login', VIEW_CORE_THEME);
4. /login の無効化(オーバーライド)
/controllers/login.php を作成
中身をコレにしてください。アクセスするとトップページにリダイレクトします
<?php
defined('C5_EXECUTE') or die("Access Denied.");
class LoginController extends Controller {
public function view(){
$this->redirect('/');
}
public function logout() {
$this->redirect('/custom_login/logout');
}
}
で、自分はどうしてるかという話ですが、ログインURLを隠すことが必要な案件の場合は、 LoginController をオーバーライドして処理を加えて、特定のハッシュがURLパラメーターに付加されていないとトップページにリダイレクト、にしています。ハッシュはconfig/site.phpに保存しておくと、運用中にログインURLを定期的に変えることも可能です。
/concrete/core/controllers/login.php を
/controllers/custom_login.php にコピー
class Concrete5_Controller_Login を
class CustomLoginController に変更
コード内の /login を /custom_login に変更
/concrete/single_pages/login.php を
/single_pages/custom_login.php にコピー
こちらは内容変更無しでいけると思います
2. シングルページの追加
管理画面のシングルページのページから、custom_loginを追加してください。
3. /custom_login のテーマを変更
/config/site_theme_paths.php を開く
このファイルがシングルページのテーマ変更用のファイルです。オーバーライドできるのですが、ファイル名が違うので注意なのです
下記を追記してください
$v = View::getInstance();
$v->setThemeByPath('/custom_login', VIEW_CORE_THEME);
4. /login の無効化(オーバーライド)
/controllers/login.php を作成
中身をコレにしてください。アクセスするとトップページにリダイレクトします
<?php
defined('C5_EXECUTE') or die("Access Denied.");
class LoginController extends Controller {
public function view(){
$this->redirect('/');
}
public function logout() {
$this->redirect('/custom_login/logout');
}
}
で、自分はどうしてるかという話ですが、ログインURLを隠すことが必要な案件の場合は、 LoginController をオーバーライドして処理を加えて、特定のハッシュがURLパラメーターに付加されていないとトップページにリダイレクト、にしています。ハッシュはconfig/site.phpに保存しておくと、運用中にログインURLを定期的に変えることも可能です。
Your post has been saved and will be published after approval by the forum moderator.
takuro hishikawa
Re: ログイン画面のURLを変更する方法