问题标签 [symfony2-voter]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
symfony - Symfony2:从另一个选民那里呼叫选民
我正在使用 Voters 来限制对 REST API 中实体的访问。
步骤1
考虑这个限制用户访问博客文章的选民:
您可以看到有一个公共函数canUserAccess
来确定是否允许用户查看 BlogPost。这一切都很好。
第2步
现在我有另一个选民检查其他内容,但也需要检查博客帖子的相同逻辑。我的想法是:
- 添加新选民
- 执行一些其他检查
- 但随后也执行此 BlogPost 检查
所以我想我会像这样将 BlogPostVoter 注入我的其他选民:
问题
当我这样做时,我得到以下错误,同时使用 setter 和构造函数注入:
检测到服务“security.access.decision_manager”的循环引用,路径:“security.access.decision_manager”
我看不出security.access.decision_manager
应该在哪里依赖 Voter 实现。所以我没有看到循环引用在哪里。
还有其他方法可以从 VoterB 呼叫 VoterA 吗?
php - 在没有第二个对象的情况下用树枝召唤选民
我正在开发一个新的 symfony 项目,并实现了自定义选民。在控制器中,我可以通过 调用选民$this->isGranted('view',$team)
,但为此,我需要一个团队对象。当我想展示一个团队时,没问题。但现在我有一个只有顶部菜单的基本模板。我只想显示“团队”按钮,当$this->isGranted('view',$team)
返回 true 时,但在这个模板中我从不显示任何团队,所以我没有团队对象,我可以通过这个函数。第一个树枝模板甚至是项目的概述。我怎样才能做到这一点?我应该将一个空白的团队对象传递给基本模板吗?谁能帮我?
symfony - Symfony Voter 支持接收 ROLE 和 Request 的方法,而不是属性和实体
Voter 似乎适用于我的整个应用程序......除了在这个控制器上:
此 Voter 方法收到错误参数的地方....
支持($属性,$主题)
选民配置是:
如果我在控制器代码上写“视图”而不是“概述”,问题就会消失。
symfony - 在 Symfony 3 中管理访问控制的 ACL 或投票者
我正在使用 symfony 3 构建一个项目,并试图在 Voters 和 ACL 之间做出决定。Soi 有许多角色,例如(SUPERADMIN、ADMIN、Office、局、经理、用户...),我的项目应该让超级管理员能够通过界面添加任何其他角色。
另外,我有很多对象(交货单、合同、兑现...),我应该管理这些对象的权限,这里有一些示例 - 办公室只能查看和编辑与办公室
用户只能查看合约
经理只能查看和编辑属于其办公室的合同
超级管理员可以查看和编辑所有内容并添加新角色并将其影响到用户
...
所以这将是一个巨大的管理项目,我已经找到了 ACL 和选民,但无法决定哪一个技术适合我的情况。或者也许还有其他技术可以帮助我:/感谢您的帮助
symfony - 是否可以直接从树枝设置新实体?
有时我需要检查用户是否可以从选民那里发表评论,显然在代码的这一点上评论还不存在,但我仍然需要检查是否允许用户发表评论。
从控制器我通常会做$this->isGranted('create', new Comment())
,但我应该如何在树枝上做同样的事情?我找不到明确的解释,而且我显然不能做类似的事情{% if is_granted('create', new comment()) %}
。
有没有办法做到这一点,而无需从控制器中破解对象,例如从控制器渲染 a new Comment()
?这样做可以让我避免在我的选民中出现大量意大利面条代码。
symfony - Symfony UserVoter 在 url 中获取当前登录用户代替用户
在显示用户操作中,我想检查登录的用户是否有权查看该用户。所以我创建了一个 UserVoter。但是,当我尝试使用注释将 url 中定义的用户传递给 Voter 时,我同时使用$subject
和$token->getUser()
如果我在操作中更改我的 var 名称,它可以正常工作($user -> $foo)。
你知道我该怎么做才能不改变我的 var name 吗?
控制器 :
和选民:
php - Symfony Voter 常量用法
我定义了一个选民,特别是voteOnAttribute
如下方法:
为什么我不能在我的方法中使用VoterInterface
常量 ( ACCESS_GRANTED
, ACCESS_ABSTAIN
, ACCESS_DENIED
)?
如果我这样做,由于vote
抽象类中的方法,不会强制执行拒绝访问决定Voter
:
由于ACCESS_DENIED
常量在 中设置为 -1 VoterInterface
,因此if ($this->voteOnAttribute($attribute, $subject, $token))
条件为真,即使返回值为 -1。
我在这里误会了什么?这些常量是否计划在我们的自定义voteOnAttribute
方法中使用?
注意:我将选民策略设置unanimous
为security.yml
php - 在 Symfony 中保护控制器动作和路由
Symfony 页面上的官方文档建议在 ACL 调用中使用 ROLE_ADMIN (example) 属性
我的问题是是否可以使用没有 ROLE_ 前缀的 ACL 调用。
问题是我们有多个没有 ROLES 但具有“USER.CREATE”或“USER_CREATE”权限的系统,这将保护 UserController 中的路由 POST /user/create 和 action Create()。
最好的解决方案是有一个投票者,它将 ACL 称为
但这不起作用,因为一切都依赖于 ROLE_ 前缀。有没有人试图实现这样的目标?
symfony - 未调用通过子资源的 Symfony 选民
这是上下文:
我使用带有 api 平台的 Symfony 3.4。
我有两节课:
- 供应商
- 产品
我想列出所有供应商的产品
在供应商实体中,我在常规 CRUD 方法上实现了 access_control,该方法适用于选民。
我还有一条通过无法正常工作的子资源的路线:
问题是,子资源的访问控制不起作用。它应该在那里检查选民对该资源的许可,但不检查选民并在我需要他返回 403 时返回 HTTP 响应代码 200。
我已经检查了他们使用安全性而不是 access_control 的文档:
它也不起作用。
有没有人知道为什么不叫选民的任何线索或提示?
symfony-3.4 - Symfony - 自定义 Voter 的“拒绝访问”
我想知道是否有办法自定义选民提供的红色页面“拒绝访问”?我想重定向到另一个页面,该页面解释了为什么以友好的方式拒绝访问,这可能吗?