安全
编辑本页安全
EasyAdmin依赖于欧宝娱乐app下载地址Symfony的安全所有与安全相关的东西。这就是为什么在限制对后端某些部分的访问之前,您需要在Symfony应用程序中正确地设置安全性:欧宝娱乐app下载地址
限制访问整个后端
使用access_control选项,您可以告诉Symfony需要欧宝娱乐app下载地址某些权限来浏览与后端关联的URL。这很简单,因为每个仪表板只使用一个URL:
1 2 3 4 5 6 7 8
#配置/包/ security.yaml安全:#……access_control:通过你的仪表盘使用的URL更改“/admin-{路径:^ /管理,角色:ROLE_ADMIN}#……
另一种选择是添加安全性注释致仪表盘控制器:
12 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():可迭代的{返回[/ /……子菜单::linkToCrud (“博客”,零,还::类)->setPermission (“ROLE_EDITOR”),);}
请注意
此权限仅显示/隐藏菜单项。即使用户看不到菜单项,与这些菜单项关联的操作仍然是可执行的。使用操作权限还可以限制对这些操作的访问。
如果您的需求更高级,请记住仪表板类是一个普通的Symfony控制器,因此您可以使用任何与安全性相关的服务来计算复杂的表达式。欧宝娱乐app下载地址在这些情况下,使用替代菜单项定义更方便,不必处理数组合并:
1 2 3 4 5 6 7 8 9 10
公共函数configureMenuItems():可迭代的{收益率子菜单::linkToDashboard (“仪表板”,“fa fa-home”);如果($这->isGranted (“ROLE_EDITOR”) & &“……”) {收益率子菜单::linkToCrud (“博客”,零,还::类);}/ /……}
限制操作访问
使用setPermission ()
方法定义查看操作链接/按钮所需的安全权限:
12 3 4 5 6 7 8 9 10 11 12 13 14 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 ()
方法:
12 3 4 5 6 7 8 9 10 11 12
公共函数getFields(字符串$行动):可迭代的{返回[IdField::新(“id”),文本框::新(“价格”), IntegerField::新(“股票”),//用户必须拥有该权限/角色才能看到该字段IntegerField::新(“销售”)->setPermission (“ROLE_ADMIN”),实域::新(“委员会”)->setPermission (“ROLE_FINANCE”),/ /……];}
控件中可以查看哪些项指数
而且细节
页感谢setEntityPermission ()
方法。此值作为调用的第一个参数传递is_granted(权限、项目美元)
函数决定当前用户是否可以看到给定的项:
12 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实现了Symfony欧宝娱乐app下载地址安全选民检查为操作、实体、菜单项等定义的权限。中的常量定义了实际的安全权限EasyCorp
类(如。许可:EA_EXECUTE_ACTION
,许可:EA_VIEW_MENU_ITEM
等)。
如果为后端定义了自定义安全投票人,请考虑更改访问决策策略由您的应用程序使用。的默认策略肯定的
,只要有一个投票人授予访问权限,就授予访问权限(如果EasyAdmin投票人授予访问权限,您的自定义投票人将无法拒绝它)。
这就是为什么您应该将默认策略更改为一致
,只有在没有选民拒绝进入的情况下才允许进入:
1 2 3 4
#配置/包/ security.yaml安全:access_decision_manager:策略:一致