Security 访问控制不';行不通
我想通过访问控制来保护路由/admin,但不起作用,我总是可以在不登录的情况下进入 编辑 这是管理员的路线:Security 访问控制不';行不通,security,symfony,access-control,Security,Symfony,Access Control,我想通过访问控制来保护路由/admin,但不起作用,我总是可以在不登录的情况下进入 编辑 这是管理员的路线: admin_homepage: resource: "@AppBundle/Resources/config/admin/index.yml" prefix: /{_locale}/admin 如果我从访问控制工作的路由中删除{u locale},我如何解决这个问题? 这是保安部 role_hierarchy: ROLE_ADMIN: [ROLE
admin_homepage:
resource: "@AppBundle/Resources/config/admin/index.yml"
prefix: /{_locale}/admin
如果我从访问控制工作的路由中删除{u locale},我如何解决这个问题?
这是保安部
role_hierarchy:
ROLE_ADMIN: [ROLE_AUTEUR, ROLE_MODERATEUR]
ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
providers:
main:
id: fos_user.user_provider.username_email
firewalls:
main:
pattern: ^/
anonymous: true
provider: main
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
default_target_path: frontend_index
csrf_provider: form.csrf_provider
logout:
path: fos_user_security_logout
target: frontend_index
remember_me:
key: %secret%
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_ADMIN }
改变
到
(如果您愿意,也可以使用此选项)
原因是安全控制是使用regex执行的,因此如果在“admin”之前不指定任何前缀,控制将失败,任何人都可以登录
在我的解决方案的第一个版本中,admin之前的任何前缀都将匹配。对于第二个,只有一个前缀在a和z之间正好有两个字母(小写)将被匹配(因此,每个语言环境)
access_control:
[...]
- { path: ^/admin, roles: ROLE_ADMIN }
access_control:
[...]
- { path: ^/.*/admin, roles: ROLE_ADMIN }
access_contol:
[...]
- { path: ^/[a-z]{2}/admin, roles: ROLE_ADMIN }