安全
编辑该页面安全
EasyAdmin依赖ob娱乐下载Symfony的安全所有与安全有关。这就是为什么在限制访问后端部分之前,你需要正确设置安全在Symfony应用程序:ob娱乐下载
限制对整个后台的访问
使用access_control选项,你可以告诉Symfony要求ob娱乐下载某些权限浏览到后端相关的URL。这是简单的因为每个仪表板只使用一个URL:
1 2 3 4 5 6 7 8
#配置/包/ security.yaml安全:#……access_control:#改变/ admin的仪表板使用的URL- - - - - -{路径:^ /管理,角色:ROLE_ADMIN}#……
另一个选择是添加安全注释仪表板控制器:
1 2 3 4 5 6 7 8 9 10 11 12
/ /应用程序/控制器/ Admin / DashboardController.php使用EasyCorp\包\EasyAdminBundle\配置\指示板;使用EasyCorp\包\EasyAdminBundle\控制器\AbstractDashboardController;使用Sensio赞助\包\FrameworkExtraBundle\配置\IsGranted;/ * * *@IsGranted(“ROLE_ADMIN”) * /类DashboardController扩展AbstractDashboardController{/ /……}
限制对菜单项的访问
使用setPermission ()
方法定义安全许可,用户必须以看到菜单项:
1 2 3 4 5 6 7 8 9
公共函数configureMenuItems():iterable{返回(/ /……子菜单::linkToCrud (“博客”,零,还::类)- >setPermission (“ROLE_EDITOR”),);}
请注意
这允许只显示/隐藏菜单项。这些菜单项相关联的行为仍可执行,即使用户不能看到菜单项。使用操作权限也限制了这些行动。
如果你需要更先进,记住,仪表板类是一个常规Symfony控制器,所以您可以使用任何服务与安全评估复杂的表达式。ob娱乐下载在这些情况下,它更方便使用选择菜单项定义不必处理数组合并:
1 2 3 4 5 6 7 8 9 10
公共函数configureMenuItems():iterable{收益率子菜单::linkToDashboard (“仪表板”,“fa fa-home”);如果(美元这- >isGranted (“ROLE_EDITOR”)& &“……”){收益率子菜单::linkToCrud (“博客”,零,还::类);}/ /……}
限制行为
使用setPermission ()
方法来定义安全许可需要看到行动链接/按钮:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
使用EasyCorp\包\EasyAdminBundle\配置\行动;使用EasyCorp\包\EasyAdminBundle\配置\行动;使用EasyCorp\包\EasyAdminBundle\配置\Crud;公共函数configureActions(操作美元行动):行动{美元viewInvoice=行动::新(“发票”,“查看发票”,“fa fa-file-invoice”)- >linkToCrudAction (“renderInvoice”);返回美元行动/ /……- >添加(Crud::PAGE_DETAIL,美元viewInvoice)/ /使用“setPermission()方法设置权限的操作/ /(相同的权限授予行动在所有页面)- >setPermission (“发票”,“ROLE_FINANCE”)/ /可以设置权限内置操作以同样的方式- >setPermission(行动::新,“ROLE_ADMIN”);}
限制访问字段
有几个选项限制显示的信息根据登录用户的页面。首先,您可以显示/隐藏的整个领域setPermission ()
方法:
1 2 3 4 5 6 7 8 9 10 11 12
公共函数getFields(字符串美元行动):iterable{返回[IdField::新(“id”),文本框::新(“价格”),IntegerField::新(“股票”),/ /用户必须有这个许可/看到这一领域的作用IntegerField::新(“销售”)- >setPermission (“ROLE_ADMIN”),实域::新(“委员会”)- >setPermission (“ROLE_FINANCE”),/ /……];}
你也可以限制用户可以看到物品的指数
和细节
由于页面setEntityPermission ()
方法。这个值是作为调用的第一个参数传递is_granted(权限、项目美元)
函数来判断当前用户可以看到给定的项目:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
名称空间应用程序\控制器\管理;使用EasyCorp\包\EasyAdminBundle\配置\Crud;使用EasyCorp\包\EasyAdminBundle\控制器\AbstractCrudController;类ProductCrudController扩展AbstractCrudController{/ /……公共函数configureCrud(Crud美元crud):Crud{返回美元crud- >setEntityPermission (“ROLE_ADMIN”)/ /……;}}
在细节
页面,如果用户不允许他们将看到一个适当的错误信息(您将看到一个详细的应用程序日志中的错误消息)。
在指数
页面,为了避免混淆和分页错误,如果用户没有权限看到一些东西,空一行将显示在列表的底部与消息解释说,他们没有足够的权限看到一些项目:
自定义安全选民
EasyAdmin实现一个Symfonyob娱乐下载安全选民检查权限为行动,定义实体,菜单项,等。实际的安全权限被定义为常量EasyCorp
类(如。许可:EA_EXECUTE_ACTION
,许可:EA_VIEW_MENU_ITEM
等)。
如果您定义一个自定义安全选民的后端,考虑改变访问决策策略使用您的应用程序。默认策略,肯定的
授予访问权限,一旦一个选民授予访问权限(如果EasyAdmin选民授予访问权限,您的自定义选民无法否认这一点)。
这就是为什么你应该改变默认的策略一致
授予访问权限,只有如果没有选民拒绝访问:
1 2 3 4
#配置/包/ security.yaml安全:access_decision_manager:策略:一致