gpt4 book ai didi

php - Symfony2 中具有相同模式的多个安全防火墙

转载 作者:行者123 更新时间:2023-12-05 07:51:04 25 4
gpt4 key购买 nike

我正在为两种类型的用户使用具有相同模式的两个防火墙:

  • 可以访问前端和后端的管理员,他们可以在前端应用中看到一些额外的控件,然后是普通用户。
  • 只能访问前端的用户。

这是我简化的 security.yml 配置:

firewalls:
admin:
pattern: .*
form_login:
login_path: /admin/login
check_path: /admin/login
logout:
path: /admin/logout
...

front:
pattern: .*
form_login:
login_path: /user/login
check_path: /user/login-check
logout: true
anonymous: true
...

dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false


access_control:
- { path: ^/admin/, role: ROLE_ADMIN }
- { path: ^/admin/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/user/login, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/user/profile, role: ROLE_FRONTEND_USER }
- { path: ^/user/upload-photo, role: ROLE_FRONTEND_USER }
...

问题是,当任何未登录的用户尝试访问例如 /user/profile 时,他们会被重定向到 /admin/login。我猜这是因为 firewallaccess_control 之间没有连接,所以 Symfony 无法知道用户是否试图访问 ROLE_FRONTEND_USERROLE_ADMIN 然后相应地重定向。

我的问题是,有什么优雅的方法可以解决这个问题吗?也许使用事件监听器并手动检查拒绝的权限是否请求的 URL 需要 ROLE_FRONTEND_USERROLE_ADMIN 角色?

最佳答案

您可以手动设置用户将被重定向到的 url:

front:
pattern: .*
# ...
access_denied_url: /user/login

匿名用户将被重定向到预期的登录路由,而不需要每个防火墙的特定模式。

希望这能解决您的问题。

关于php - Symfony2 中具有相同模式的多个安全防火墙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35561414/

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