Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何强制symfony2仅对一个页面使用HTTPS_Php_Symfony_Https_Symfony 2.1_Symfony Routing - Fatal编程技术网

Php 如何强制symfony2仅对一个页面使用HTTPS

Php 如何强制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

在symfony2应用程序中,我只能对单个页面使用HTTPS。我已经试过了

security.yml

- { 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 }