symfony - Symfony Voters 收集对象
问题描述
我正在使用 Voters 来管理我的应用程序的权限,并且对于单个对象来说一切正常。
我似乎无法将 Voter 应用于对象集合。例如,我有一个端点 /persons 将返回完整的人员列表,但它应该根据每个用户的权限进行过滤(部门经理应该只看到自己部门中的人员)。有没有办法对选民这样做?
解决方案
这可以使用授权检查器来完成:
// your controller
private $authorizationChecker;
public function __construct(AuthorizationCheckerInterface $authorizationChecker)
{
$this->authorizationChecker = $authorizationChecker;
}
// in your action
return array_filter($userCollection, function (User $user) {
return $this->authorizationChecker->isGranted('VOTER_NAME', $user);
});
或者只是如果你是控制器扩展 Symfony 的Controller
类:
return array_filter($userCollection, function (User $user) {
return $this->isGranted('VOTER_NAME', $user);
});
推荐阅读
- javascript - GCS 中的静态网页 - html 中的 java 脚本中的 API 调用没有响应
- kubernetes - 如何在 kubernetes 中使用 fdb-document-layer?
- javascript - 如何在不使用 getElementbyId 的情况下使用 Javascript 在 HTML 中写下段落?
- python - 如何为不断增加的评论集合分配或添加新问题“标签”?
- python-3.x - AWS Lambda Python 脚本未按预期迭代“aws_account_numbers”
- opencv - 为什么从 Julia 调用 OpenCV.pyrDown() 可以将图像大小减半,但不能将其四等分?
- python - 对于 step, (batch_x, batch_y) in enumerate(train_data.take(training_steps), 1) 错误语法
- sql-server - 将 SQL Server 实例上的每个数据库设置为“简单恢复”
- typescript - 图像未在 Ionic React 中显示
- c++ - 如果 += 在 return 语句中,为什么不移动对象