我有一个登录管理区域,我们强制要求https://.如果用户没有登录,点击路由/管理员应该重定向到登录页面,但我得到一个无限的重定向循环.不知道出了什么问题,这是security.yml:
firewalls:
admin_login:
pattern: ^/admin/secured/login$
security: false
admin_secured_area:
pattern: ^/admin
provider: entity_admin
form_login:
check_path: /admin/secured/login_check
login_path: /admin/secured/login
default_target_path: /admin
logout:
path: /admin/secured/logout
target: /
access_control:
- { path: ^/admin/secured/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
- { path: ^/admin, roles: ROLE_ADMIN, requires_channel: https }
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
防火墙中不需要"admin_login"部分.但看起来你忘记了匿名参数..
firewalls:
admin_secured_area:
anonymous: ~
pattern: ^/admin
provider: entity_admin
form_login:
check_path: /admin/secured/login_check
login_path: /admin/secured/login
default_target_path: /admin
logout:
path: /admin/secured/logout
target: /
access_control:
- { path: ^/admin/secured/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
- { path: ^/admin, roles: ROLE_ADMIN, requires_channel: https }
Run Code Online (Sandbox Code Playgroud)
正如我在评论中所说,您是否为已登录用户设置了ROLE_ADMIN角色?
编辑:您的路由是否也为管理部分说明了HTTPS频道?
您好,这与 Symfony2 在站点处于负载均衡器下时检查 SSL 的方式有关$request->isSecure(),PHP 中存在一些不一致的标头名称。配置文件需要以下内容:
trusted_proxies: [10.0.0.0/8]
Run Code Online (Sandbox Code Playgroud)
它现在可以工作,但我不知道此设置是否存在安全问题。