我正在为安全性配置新的 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
我的登录路径控制器的路由文件:
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 => on。
不过,我还没有弄清楚该设置在哪里。