使用Symfony强制HTTPS

时间:2014-10-23 04:38:56

标签: symfony

我正在尝试强制所有请求使用example.com/checkout/来使用HTTPS。我读了Symfony docs并在我的security.yml文件中有这个:

access_control:
    - { path: ^/checkout, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }

但是,当我转到http://example.com/checkout/时,我不会重定向到HTTPS。我做错了什么?

3 个答案:

答案 0 :(得分:1)

YAML:

 secure:
    path:     /secure
    defaults: { _controller: AcmeDemoBundle:Main:secure }
    schemes:  [https]

或注释:

/**
 * @Route("/secure", schemes = "https")
 */
class SecureController
{
     ...
}

有关详情:http://symfony.com/doc/current/cookbook/routing/scheme.html

答案 1 :(得分:0)

原来我没有设置防火墙。我需要在security.yml的防火墙部分添加它:

checkout:
    pattern: ^/checkout
    anonymous: ~

这很有效:

access_control:
    - { path: ^/checkout, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }

答案 2 :(得分:-1)

这是为了允许用户使用https频道。要重定向https,您应该使用htaccess,或者只需检查控制器内部操作。

Symfony配置会强制用户使用https匹配路由,否则404找不到。 :)