Cómo forzar HTTPS o HTTP a diferentes URL

Puedes forzar áreas de tu sitio para que utilicen el protocolo HTTPS en la configuración de seguridad. Esto se hace a través de las reglas access_control usando la opción requires_channel. Por ejemplo, si deseas forzar que todas las URL que empiecen con /secure usen HTTPS podrías utilizar la siguiente configuración:

  • YAML
    access_control:
        - path: ^/secure
          roles: ROLE_ADMIN
          requires_channel: https
    
  • XML
    <access-control>
        <rule path="^/secure" role="ROLE_ADMIN" requires_channel="https" />
    </access-control>
    
  • PHP
    'access_control' => array(
        array(
            'path'             => '^/secure',
            'role'             => 'ROLE_ADMIN',
            'requires_channel' => 'https',
        ),
    ),
    

El formulario de acceso necesita permitir acceso anónimo, de lo contrario los usuarios serán incapaces de autenticarse. Para forzarlo a usar HTTPS puedes utilizar reglas access_control usando el rol IS_AUTHENTICATED_ANONYMOUSLY:

  • YAML
    access_control:
        - path: ^/login
          roles: IS_AUTHENTICATED_ANONYMOUSLY
          requires_channel: https
    
  • XML
    <access-control>
        <rule path="^/login"
              role="IS_AUTHENTICATED_ANONYMOUSLY"
              requires_channel="https" />
    </access-control>
    
  • PHP
    'access_control' => array(
        array(
            'path'             => '^/login',
            'role'             => 'IS_AUTHENTICATED_ANONYMOUSLY',
            'requires_channel' => 'https',
        ),
    ),
    

También es posible especificar el uso de HTTPS en la configuración de enrutado consulta Cómo forzar las rutas para que siempre usen HTTPS o HTTP para más detalles.

Bifúrcame en GitHub