Issue:
- 用户登录https://example.com/login https://example.com/login
- 认证已获批准
- 根据 security.yaml 中的配置,Symfony 在登录后将用户重定向到个人资料页面。
- 但它会将它们重定向到错误的网址http://example.com/homepage http://example.com/homepage
安全.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_email
firewalls:
main:
pattern: ^/
form_login:
check_path: /login_check
login_path: /login
default_target_path: /profile
provider: fos_userbundle
logout:
path: /logout
target: /splash
anonymous: ~
access_control:
- { roles: ROLE_USER, requires_channel: https }
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
acl:
connection: default
环境架构:
Server1 和 Server2 拥有 Symfony2 应用程序。
问题:
如何强制 Symfony 使用 https 协议而不是 http 生成重定向 URL?
到目前为止,我已经查看了这些文档,并且该解决方案在我的情况下不起作用:
- http://symfony.com/doc/current/cookbook/routing/scheme.html http://symfony.com/doc/current/cookbook/routing/scheme.html
看一眼
供应商/symfony/symfony/src/Symfony/Component/HttpFoundation/Request.php
AWS ELB 使用 HTTP_X_FORWARDED_PROTO 和 HTTP_X_FORWARDED_PORT,而 Symfony 则查看 X_FORWARDED_PROTO 和 X_FORWARDED_PORT 标头来判断连接及其安全状态。
您可以尝试更改 trustHeaders 中的这些键,尽管我不建议直接更改它们,但找到一种方法来覆盖它们。
protected static $trustedHeaders = array(
self::HEADER_CLIENT_IP => 'X_FORWARDED_FOR',
self::HEADER_CLIENT_HOST => 'X_FORWARDED_HOST',
self::HEADER_CLIENT_PROTO => 'HTTP_X_FORWARDED_PROTO',
self::HEADER_CLIENT_PORT => 'HTTP_X_FORWARDED_PORT',
);
参考 -http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#x-forwarded-for http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#x-forwarded-for
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)