Symfony 2 - access_control vs isGranted() 来控制控制器中的访问
Symfony 2 - access_control vs isGranted() to control access in controller
在 documentation 中有许多示例说明如何管理某些路由的访问控制。
我在 security.yml
中有我的 access_control
块,其中我描述了哪个角色可以访问哪个页面:
security:
access_control:
- { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/trainee, roles: ROLE_TRAINEE }
- { path: ^/university, roles: ROLE_UNIVERSITY_PROFESSOR }
- { path: ^/company, roles: ROLE_COMPANY_TUTOR }
现在这些路由只能通过这些 ROLES
访问,而不能通过其他访问。
在这些路线中我有一些表格,我想知道 access_control
是否足以让其他 ROLE
无法到达这些表格?
我在网上看到一些例子,人们在提交表单时输入 isGranted()
:
if ($form->isValid()) {
if (!$authorizationChecker->isGranted('ROLE_TRAINEE')) {
throw new AccessDeniedException();
}
// ...
}
但在这里,我不确定他们是在保护这些路由免受 access_control
的影响,还是仅在控制器内部使用 isGranted()
保护这些路由。
有人可以解释一下区别吗,如果我也应该用 isGranted()
保护表单,即使路由受到 access_control
的保护?
拥有访问控制规则就足够了,如果您的表单位于与 access_control 的正则表达式匹配的 uri 后面(您为什么不简单地测试一下...?)
在 documentation 中有许多示例说明如何管理某些路由的访问控制。
我在 security.yml
中有我的 access_control
块,其中我描述了哪个角色可以访问哪个页面:
security:
access_control:
- { path: ^/$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/trainee, roles: ROLE_TRAINEE }
- { path: ^/university, roles: ROLE_UNIVERSITY_PROFESSOR }
- { path: ^/company, roles: ROLE_COMPANY_TUTOR }
现在这些路由只能通过这些 ROLES
访问,而不能通过其他访问。
在这些路线中我有一些表格,我想知道 access_control
是否足以让其他 ROLE
无法到达这些表格?
我在网上看到一些例子,人们在提交表单时输入 isGranted()
:
if ($form->isValid()) {
if (!$authorizationChecker->isGranted('ROLE_TRAINEE')) {
throw new AccessDeniedException();
}
// ...
}
但在这里,我不确定他们是在保护这些路由免受 access_control
的影响,还是仅在控制器内部使用 isGranted()
保护这些路由。
有人可以解释一下区别吗,如果我也应该用 isGranted()
保护表单,即使路由受到 access_control
的保护?
拥有访问控制规则就足够了,如果您的表单位于与 access_control 的正则表达式匹配的 uri 后面(您为什么不简单地测试一下...?)