La mejor práctica para SSL en CakePHP

Me gustaría implementar HTTPS para todas las páginas.

Yo uso CakePHP 2.3 con el componente "Auth".

En realidad, la única forma que encontré es agregar una "condición antes del filtro".

Pero esto está muy sucio porque tengo muchas solicitudes "no SSL" debido a Auth-Component.


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);
  }

}




El problema aparece cuando no estoy conectado e intento acceder a mi sitio web

Solicitud -> Respuesta (debido a)GET hxxp: // MYSITE / ->302 hxxps: // MYSITE / (antesFilter-redirection)CONSIGA hxxps: // MYSITE / ->302 hxxp: // MYSITE / users / login (componente Auth)GET hxxp: // MYSITE / users / login ->302 hxxps: // MYSITE / users / login (antes de la redirección del filtro)CONSIGA hxxps: // MYSITE / users / login ->200POST hxxps: // MYSITE / users / login (con creds) ->302 hxxp: // MYSITE / (componente Auth)GET hxxp: // MYSITE / ->302 hxxps://MI SITIO/CONSIGA hxxps: // MYSITE / ->200

Entonces, ¿conoces otra manera de hacer eso?


NB: tuve que forzar la seguridad de mi cookie en core.php porque no lo estaban.

core.php --->

Configure::write('Session', array(
  'defaults' => 'php',
  'ini' => array(
    'session.cookie_secure' => true
  )));




Tenga en cuenta que también intenté forzar SSL modificando .htaccess pero todo lo que obtengo es un bucle infinito.

EDITAR:

El .htaccess predeterminado en CakePHP es

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

Lo que intenté agregar:

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

Respuestas a la pregunta(1)

Su respuesta a la pregunta