Лучшая практика для SSL в CakePHP
Я хотел бы реализовать HTTPS для всех страниц.
Я использую CakePHP 2.3 с "Auth» составная часть.
На самом деле единственный способ, который я нашел, это добавить "beforeFilter-состояния».
Но это очень грязно, потому что у меня многоне-SSL» запросы из-за Auth-компонента.
AppController.php --->
class AppController extends Controller {
public function beforeFilter() {
if (env("SERVER_PORT") != "443") {
$this->Security->blackHoleCallback = 'forceSSL';
$this->Security->requireSecure();
}
}
public function forceSSL() {
$this->redirect('https://' . env('SERVER_NAME') . $this->here);
}
}
Проблема появляется, когда я не вошел в систему, и я пытаюсь получить доступ к своему веб-сайту
Итак, вы знаете другой способ сделать это.
NB: мне пришлось принудительно защитить свой cookie в core.php, потому что они не былит.
core.php --->
Configure::write('Session', array(
'defaults' => 'php',
'ini' => array(
'session.cookie_secure' => true
)));
Обратите внимание, что я также пытался форсировать SSL путем изменения .htaccess, но все, что я получил, это бесконечный цикл.
РЕДАКТИРОВАТЬ :
.Htaccess по умолчанию в CakePHP - это
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
Что я пытался добавить:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]