ログイン画面の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:01
動くのかもしれないですけど、ちょっと…違う方法を考えてみます。
 

Re: ログイン画面のURLを変更する方法

2014年12月10日 at 21:09
hissyさん

有り難うございます。
サーバ側の設定(RewriteRuleなど)で対処する方法などでも構いませんので、
良い(よりスタンダードな)方法があれば、展開頂けると幸いです。
 

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を定期的に変えることも可能です。
 

Re: ログイン画面のURLを変更する方法

2014年12月10日 at 21:58
hissyさん

有り難う御座いました!
ほぼ教えて頂いた通りで、無事に変更出来ました。

/concrete/single_pages/login.php を
/single_pages/custom_login.php にコピー

こちらは内容変更無しでいけると思います


ここだけ、phpスクリプト内にpathがコーディングされていたので、
その部分を/custom_login
に変更する必要がありました。

それ以外は、教えて頂いた通りの修正で大丈夫でした。