无论我在何处尝试实现 https channel ,都会出现无限重定向循环。这是 security.yml 文件的样子:
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
main:
pattern: .*
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
check_path: /login_check
login_path: /login
default_target_path: /home
logout:
path: /logout
target: /index
security: true
anonymous: true
remember_me:
key: mySecret
lifetime: 604800 #seven days
path: /
domain: ~
access_control:
- { path: ^/js, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/css, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/_wdt, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/_profiler, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/index*, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/.*, role: ROLE_ADMIN }
- { path: ^/.*, roles: ROLE_USER }
例如,如果我将管理路径更改为:
- { path: ^/admin/.*, role: ROLE_ADMIN, requires_channel: https }
循环将会发生。 同样在 routing/entity.yml 中,我尝试了这样的事情:
entity_index:
pattern: /
defaults: { _controller: MyBundle:Entity:index }
schemes: [https]
有人知道如何解决这个问题吗?
最佳答案
我遇到了同样的问题,因为服务器位于反向代理后面,反向代理通过 ssl 与客户端通信,但与运行应用程序的服务器通过 http 通信。我只使用这个,因为 RP 和 App Server 之间的连接是安全的,因为它不会离开内部网络。如果你真的确定你真的运行了 SSL 并且出现了这个问题,那么有一个丑陋的修复方法......但它确实是最后的手段并且使用你自己的风险:
您可以像这样在您的 app.php 中覆盖服务器变量:
$_SERVER['HTTPS'] = 'on';
$_SERVER['SERVER_PORT'] = 443;
同样,这是一个丑陋的修复程序,不是解决方案,仅在您承担唯一风险和责任的情况下使用,如果我的反向代理没有转发端口的问题并且不是100% 肯定我在客户端和 RP 之间有 SSL。别忘了,如果你没有真正运行有效的 ssl,这会让你容易受到攻击
关于security - 在 Symfony2 中使用 https 重定向任何 url 上的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20674567/