Php 如何强制symfony2仅对一个页面使用HTTPS
在symfony2应用程序中,我只能对单个页面使用HTTPS。我已经试过了 security.ymlPhp 如何强制symfony2仅对一个页面使用HTTPS,php,symfony,https,symfony-2.1,symfony-routing,Php,Symfony,Https,Symfony 2.1,Symfony Routing,在symfony2应用程序中,我只能对单个页面使用HTTPS。我已经试过了 security.yml - { path: ^/payment, roles: ROLE_USER, requires_channel: https } 它工作得很好,但当我从/payment页面导航到其他页面时,它在HTTPS而不是HTTP中保持不变。我还尝试了sonata admin controller的一些功能,如: PaymentAdmin.php $collection ->add
- { path: ^/payment, roles: ROLE_USER, requires_channel: https }
它工作得很好,但当我从/payment页面导航到其他页面时,它在HTTPS而不是HTTP中保持不变。我还尝试了sonata admin controller的一些功能,如:
PaymentAdmin.php
$collection
->add('makePayment', 'payment/{paymentId}',$options = array('_scheme' => 'https'));
但同样的问题。只是我只想对/支付页面使用HTTPS,不想对其他页面使用HTTPS。我如何解决这个问题 您可以尝试将regexp开始符号“^”添加到您的路径中,如“^/payment”,该符号应说明以/payment开头的路由应为“https” 中的例子
也显示了这一点。您也可以尝试将“$”添加到路径的末尾,如^/payment$,这样只适用于路由/支付,而不适用于其子路由。是的,我也这样做了,但我的问题是,如果我访问/支付页面后,它更改为https,并且永远不会恢复为http,那么我的整个站点都在使用http。我只想要/payment页面的https。您是否尝试添加{path:^/,roles:ROLE\u USER,requires\u channel:http}这应该在所有路由上强制http,如果您保留/payment的https设置,在/payment和站点的其他部分之间移动时,它应该切换。在定义路由时,您也可以尝试通过添加方案[https]选项来强制控制器使用https。如果您按照以下顺序定义选项:{path:^/payment,roles:ROLE\u USER,requires\u channel:https}{path:^/,roles:ROLE\u USER,requires\u channel:http},您可以尝试这样切换它们{path:^/,roles:ROLE\u USER,requires\u channel:http}{path:^/payment,roles:ROLE\u USER,requires\u channel:https},虽然不确定这是否会有帮助,但订购有时确实很重要。至少在路由中是如此。
{ path: ^/payment, roles: ROLE_USER, requires_channel: https }