0

假设我有三个角色:

1) ADMIN_ROLE
2) USER_ROLE
3) COMPANY_ROLE 

现在我有每个角色的捆绑包。

1) AdminBundle
2) UserBundle
3) CompanyBundle

我有三个路线

1) /admin
2) /user
3) /company

我不想在每个捆绑包的每个控制器中检查 ho 用户(他的角色是什么)。symfony 安全性的这一部分是否会为我做到这一点:

-{ path: ^/admin, roles: ROLE_ADMIN } #only ROLE_ADMIN will be able to see this
-{ path: ^/user, roles: ROLE_USER } #only ROLE_USER will be able to see this
-{ path: ^/company, roles: ROLE_COMPANY } #only ROLE_COMPANY will be able to see this

我的问题是:

1)是否有可能拥有 ROLE_COMPANY (或该仪表的任何其他自定义角色)?

2) access_control 是否会检查登录的用户角色,如果我是 ROLE_ADMIN 并试图访问一些为 ROLE_USER 提供的页面,symfony 会处理它并说“这不是给管理员的,这是给用户的”?

3)如果 symfony 不能为我处理这个问题,是否可以在每个打开/刷新页面上都有一些事件侦听器来为我检查这个?

我不想检查每个登录用户的控制器。这有点愚蠢。

4

1 回答 1

2
  1. 是的
  2. 是的(您也可以定义层次结构,因此您可以使 ROLE_ADMIN 能够访问它的所有子角色)。例如,您可以让 ROLE_ADMIN 能够访问所有 ROLE_USER 和 ROLE_ADMIN 受保护的路由,但让 ROLE_USER 只能访问它自己的路由。(文档
  3. 您仍然可以创建侦听器,但它会为您完成
于 2013-11-09T12:36:16.350 回答