このタイトルで調べてみると、みんな結構苦労していることがわかります。
CakePHPでSSLに対応が必要になった。また、HttpのアクセスをHttpsへリダイレクトもしたい。
っつーわけで、Securityコンポーネントを読み込むようにしました。
が、
障害発生!!!
Post送信や、Ajaxがうまくいかなくなった!!!
AppController.phpで、PostやAjaxを許可するようにすればおk.
- app/Controller/AppController.php
<?php function beforeFilter() { $this->Security->blackHoleCallback = "securityError"; $this->Security->requireAuth('login'); // これを追加 $this->Security->validatePost = false; // Post $this->Security->csrfCheck = false; // Ajax } function securityError() { $this->redirect('https://' . env('SERVER_NAME') . $this->here); }
と、ここまではテンプレ。ぐぐったら結構見つかります。
私の体験した障害はまだまだおわらんよ。
実はこれを適応したあともうまくいかないエラーが発生し続けました。
The request has been black-holed
しかも! 発生するページと発生しないページが存在する・・・!
/(^o^)\ナンテコッタイ ってやっている間に原因を特定しました。
- ChildController.php
<?php public function beforeFilter() { // 〜なんらかの処理〜 }
あぁ、、、、
あぁああ!
オーバーライドしている・・・!(°ω°;
どうやら、発生するページのControllerは、beforeFilterをオーバーライドしているので、通信の許可がなくっているらしい。
なので、修正しました。
- ChildController.php
<?php public function beforeFilter() { // AppControllerの情報を先に呼び出す parent::beforeFilter(); // 〜なんらかの処理〜 }
これで大丈夫。。。めちゃくちゃ焦りました。。。。。orz