Motomichi Works Blog

モトミチワークスブログです。その日学習したことについて書いている日記みたいなものです。

さくらvpsとcakephp2.6.7で開発日記 その0016 httpでアクセスされたときに、httpsにリダイレクトする

参考にさせて頂いたページ

セキュリティ — CakePHP Cookbook 2.x ドキュメント

CakePHP 2.xでSSL通信(https)を強制する – SOAR CODE

はじめに

Securityコンポーネントについて理解が浅いままにAppControllerに色々記述すると影響範囲が大きいので、このブログ記事を読んでそのままにやるよりも、セキュリティ — CakePHP Cookbook 2.x ドキュメントとか読んで頂ければと思います。

AppController.phpの編集

Securityコンポーネントを読み込む

例として以下の通り。

//Securityコンポーネントを読み込む
public $components = array(
  'Security',
);

httpでアクセスされたときに実行するメソッドを定義する

例として以下の通り。

//Securityコンポーネントによって禁止されているアクションが呼ばれたときに実行するメソッドを定義
public function blackhole() {
  $this->redirect("https://".env('SERVER_NAME').$this->here);
}

blackHoleCallbackとrequireSecureの設定をする

例として以下の通り。

public function beforeFilter() {
  //呼び出されたアクションが、
  //Securityコンポーネントによって禁止されているアクションだった場合に実行するメソッドとして、
  //上記のblackholeメソッドを指定
  $this->Security->blackHoleCallback = 'blackhole';
  //Securityコンポーネントによって、全てのアクションにおいて、httpリクエストを禁止
  //(httpリクエストの場合はblackholeメソッドが実行される)
  $this->Security->requireSecure();
}