保护Symfony中的控制器操作和路由

时间:2017-09-17 09:17:02

标签: php symfony permissions acl symfony2-voter

Symfony页面上的官方文档建议在ACL调用中使用ROLE_ADMIN(example)属性

    $this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'Unable to access this page!');

我的问题是,是否可以在没有ROLE_前缀的情况下使用ACL调用。

问题是我们有多个系统没有ROLES但具有“USER.CREATE”或“USER_CREATE”权限,这将保护UserController中的路径POST / user / create和action Create()。

最好的解决方案是拥有一个将ACL调用为

的选民
$objectName = 'USER';
$action = 'CREATE';
$this->denyAccessUnlessGranted($objectName. '_'. $action, null, 'Unable to access this page!');

但这不起作用,因为一切都在ROLE_前缀上传递。 有没有人试图达到这样的目的?

1 个答案:

答案 0 :(得分:0)

IIRC,ROLE是symfony角色选民的强制性前缀,我不认为可以避免(它是硬编码的)但你可以创建自己的选民并添加你需要的逻辑,你可以在这里阅读更多:

https://symfony.com/doc/current/security/voters.html

对选民来说也是一个很好的互联网:

https://stovepipe.systems/post/symfony-security-roles-vs-voters