CakePHP で SSL 接続を必須にするには以前書いた、Security コンポーネントを使う方法があります。
CakePHP1.2 Security コンポーネントを使用して SSL でのみアクセスを許可する

しかし、単純に SSL 接続を必須にしたい場合は、Baker にある SSL コンポーネントを使うのが簡単です。
Component for forcing a secure connection (Articles) | The Bakery, Everything CakePHP

特定のアクションだけ SSL にしたい場合はそのアクションのメソッドに以下のように書きます。

class MyController extends AppController {
    var $components = array('Ssl');
    function index() {
      $this->Ssl->force();
    }

    function view($id) {
    }
}

アプリケーション全体に設定したい場合は app/app_controller.php に以下のように書きます。

class AppController extends Controller {
  var $components = array('Ssl');
  function beforeFilter(){
    $this->Ssl->force();
  }
}

単純に強制的に SSL にしたい場合などは Security コンポーネントよりも簡単です。
まあ、でも Security コンポーネントを使っても簡単ですね。

class AppController extends Controller {
  var $components = array('Security');

  function beforeFilter(){
    $this->Security->blackHoleCallback = "forceSSL";
    $this->Security->requireSecure();
  }

  function forceSSL() {
    $this->redirect("https://".env('SERVER_NAME').$this->here);
  }
}

Security コンポーネントのマニュアルの最後のところに書かれています。
Usage :: Security Component :: Core Components :: The Manual :: 1.2 Collection :: The Cookbook

日本語マニュアルはちょこっと古めなので、英語が苦でなければ、英語のマニュアルを見た方が情報が早いです。

関連する投稿