【发布时间】:2017-12-29 06:33:44
【问题描述】:
我开始了 Symfony 的旅程。
在这我试图保护我的身份验证路由(我正在使用 FOSUserBundle)所以我这样做:
access_control:
- { path: ^/logowanie$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/rejestracja, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetowanie-hasla, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/backstage/, role: ROLE_ADMIN }
- { path: ^/profile/, role: ROLE_USER }
但是,无论我是否登录,我都可以随时前往这些路线。
我的坏在哪里?
# To get started with security, check out the documentation:
# https://symfony.com/doc/current/security.html
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
check_path: fos_user_security_check
login_path: fos_user_security_login
logout:
path: fos_user_security_logout
target: website.home
logout: true
anonymous: true
access_control:
- { path: ^/logowanie$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/rejestracja, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetowanie-hasla, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/backstage/, role: ROLE_ADMIN }
- { path: ^/profile/, role: ROLE_USER }
【问题讨论】:
-
显示完整的安全配置
-
你的问题不是很清楚,但我想,在你的情况下,任何用户都可以去
/backstage/和/profile/? -
@MaxP。添加到问题中。 Jovan Perovic 不仅如此。我想阻止登录用户访问此路线(logowanie - 登录,rejestracja - 注册等)
-
不,你不能那样做。如果用户登录也有角色
IS_AUTHENTICATED_ANONYMOUSLY。这就是角色层次结构的工作方式(否则没有理由将其称为“层次结构”)。 -
@malcolm 那么最好的解决方案是什么?覆盖此路由的视图方法并为登录用户添加条件?
标签: php symfony fosuserbundle