我正在尝试强制所有请求使用example.com/checkout/来使用HTTPS。我读了Symfony docs并在我的security.yml文件中有这个:
access_control:
- { path: ^/checkout, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
但是,当我转到http://example.com/checkout/时,我不会重定向到HTTPS。我做错了什么?
答案 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找不到。 :)