gpt4 book ai didi

php - Symfony 安全部队 HTTPS 尽管 requires_channel http

转载 作者:行者123 更新时间:2023-12-02 04:48:03 27 4
gpt4 key购买 nike

我正在配置新的 symfony 安装以确保安全,但我的登录表单无法正常工作。每当我被重定向到登录页面时,symfony 都会重定向到 https 并将 :80 添加到域中。

这是我的 security.yml

# app/config/security.yml
security:
firewalls:
login:
pattern: ^/login
anonymous: true
main:
pattern: ^/
anonymous: false
form_login:
login_path: /login
check_path: /login_check
logout:
path: /logout
target: /home

access_control:
- { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: http }
- { path: ^/secure, roles: IS_AUTHENTICATED_FULLY }
- { path: ^/secure/max, roles: ROLE_ADMIN }

providers:
in_memory:
memory:
users:
ryan: { password: ryanpass, roles: 'ROLE_USER' }
admin: { password: kitten, roles: 'ROLE_ADMIN' }

encoders:
Symfony\Component\Security\Core\User\User: plaintext

我的登录路径 Controller 的路由文件:

login:
pattern: /login
defaults: { _controller: RGCoreBundle:Default:login }

login_check:
pattern: /login_check

当我访问主页时,我被重定向到:

https://myserver.com:80/login

...这显然不起作用,因为我没有配置 SSL...

我已经尝试更改登录路径的路径,它会更新以指向新路径,所以它肯定是在读取配置文件...

我还应该看哪里?这是全新安装,我已经删除了 ACME 包。

更新:

我正在使用调试器和打印语句深入了解内核。

到目前为止,我可以确定它正在这样做,因为当身份验证失败时(应该如此),会为“login_path”生成重定向响应。对 generateUri 的调用调用了原始请求对象的“geturi”函数。

追踪到这里,到目前为止的原因是 Request 对象的 ServerBag 开启了 HTTPS =>。

虽然我还没有弄清楚它是在哪里设置的。

最佳答案

(对于 nginx)虽然现有答案表明您可以注释掉 fascgi_param HTTPS on; 但是,对于某些配置,他们需要该指定。更好的解决方案是在 url 为 https 时打开它,在不是时关闭它。

幸运的是,在 nginx 配置文件中,$https 如果是安全端口则设置为“on”,否则设置为“off”。所以这应该有效:

fascgi_param HTTPS $https;

如果您使用的是旧版本的 nginx(1.1.11 之前),$https 未定义,因此您可以在配置文件中手动定义。

if ($server_port = 443) { set $https on; }
if ($server_port = 80) { set $https off; }

关于php - Symfony 安全部队 HTTPS 尽管 requires_channel http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19412069/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com