如何在symfony中为用户设置访问控制?

问题描述 投票:0回答:1

我有一个用户表,其中角色字段包含[“ ROLE_SUPERUSER”]

现在我有两个Urls:

  • localhost:8000 / api / zh /登录
  • localhost:8000 / api / zh / test

当用户成功登录时,它会生成一个cookie。如何将访问控制设置为第二个URL,如果未设置cookie,则不允许该URL。

我已在security.yaml文件中添加了以下几行

access_control:
 - { path: ^/api/{locale}, roles: IS_AUTHENTICATED_ANONYMOUSLY }
 - { path: ^/api/{locale}, roles: ROLE_SUPERUSER}

但是这没用。

有帮助吗?

php symfony symfony4
1个回答
1
投票

access_control中,首先进行匹配设置。因为您的模式都匹配,所以所有用户均为IS_AUTHENTICATED_ANONYMOUSLY。您必须为防火墙使用单独的路径/模式来授权具有不同角色的角色:

access_control:
 - { path: ^/api/{locale}/secured, roles: ROLE_SUPERUSER}
 - { path: ^/api/{locale}, roles: IS_AUTHENTICATED_ANONYMOUSLY }

您可以在文档中找到更多信息:Symfony - How to restrict Firewalls to a Request

© www.soinside.com 2019 - 2024. All rights reserved.