问题标签 [symfony4-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.

0 投票
0 回答
176 浏览

symfony - Symfony 选民:拒绝访问

supports()返回时是否正常false,有结果Access Denied?根据文档,选民最终应该得到支持,所以我认为应该授予访问权限。

选民::支持($attribute, $subject)

当isGranted()(或denyAccessUnlessGranted())被调用时,第一个参数在这里作为$attribute(例如ROLE_USER,edit)传递,第二个参数(如果有的话)作为$subject(例如null,一个Post 对象)传递。您的工作是确定您的选民是否应该对属性/主题组合进行投票。如果返回 true,将调用 voteOnAttribute()。否则,你的选民就完成了:其他选民应该处理这个。在此示例中,如果属性是 view 或 edit,并且对象是 Post 实例,则返回 true。

0 投票
1 回答
6215 浏览

symfony - 令牌存储不包含身份验证令牌和denyAccessUnlessGranted()

我有一个错误:

“令牌存储不包含身份验证令牌。一个可能的原因可能是没有为此 URL 配置防火墙。

这是由denyAccessUnlessGranted()添加到控制器引起的。它发生在测试环境中security: false。在这种情况下是否有处理环境的机制或者我应该如何处理它?

痕迹:

0 投票
1 回答
395 浏览

php - 如何在不拒绝访问控制器的情况下使用 Symfony 4 Voters

我正在使用 symfony 4 voters,并且喜欢它如何授予或拒绝对控制器方法的权限。

我现在想要实现的是检查用户是否有权在我的树枝视图中查看特定块。我有一个名为 Web 的选民:

我想做{% if isGranted(‘Web’) %}{% endif %}

这可能吗?否则,我想从控制器的变量中获取我的投票者的结果,该变量将传递给视图,而无需拒绝对方法/页面的访问。

这可能吗?

谢谢。

0 投票
1 回答
68 浏览

symfony - Symfony Voters 仅用于检查用户权限?

Symfony Voters(文档)用于检查实体的用户权限(通常):

安全选民是检查权限的最细粒度的方式(例如“这个特定用户可以编辑给定的项目吗?”)

如果我想控制一个模块的权限(对于一个用户),Symfony Voters 他们适应了吗?示例:如果模块已验证,则无法编辑模块(validated= 数据库上的 true)?

总而言之,选民是完全与用户绑定的,还是他们可以扮演更一般的角色?

0 投票
2 回答
183 浏览

symfony - 处理多级角色

我有一个与经过身份验证的用户一起使用的多应用程序。
所有这些应用程序可以一起部署到不同的客户端,但使用相同的用户数据库。
例如连锁酒店。
用户的角色信息在每个请求的标头中可用。

例如,经理在他自己的酒店拥有完全访问权限,但在另一家酒店只有读取权限。
前任:

我如何处理组织的多个角色级别?
我在 symfony 中阅读了一些关于选民和角色的文档,但没有关于某种群体中的角色。

0 投票
1 回答
394 浏览

php - Symfony 4:如何获得投票赞成的选民?

我怎样才能让投票给“授予”的选民,内部事件订阅者?有没有我可以获取和使用的服务?

我的用例。我的应用程序有两个选民:主要选民和管理员选民。当主要选民不允许访问但管理员选民允许访问时,我想显示额外的 Flash 消息。我可以通过两种不同的解决方案来解决这个问题:通过在管理员投票者内部调度事件或通过在投票者内部设置 flash msg - 但我想避免它,因为我需要确保只有一个投票者投票支持访问。

0 投票
1 回答
1094 浏览

forms - Symfony4 - 如何使用选民过滤 EntityType 字段

我需要使用选民过滤 EntityType 字段中显示的选项。

我有一个用户实体,它与 CustomerGroup、CustomerEntity 和 CustomerSite 有一些关系。我有一个投票者,例如,客户组。我可以根据当前用户在列表视图中的角色过滤结果。我使用“array_filter”函数使其工作。用户对象示例:

我用谷歌搜索了很多页面,但都没有成功!我试图在 CustomerGroupRepository 中创建一个自定义函数,并从 FormType 的 query_builder 选项中调用它:它会引发错误。见下图:CustomerGroupRepository.php:

以及带有 query_builder 选项的 Buildform 函数:

我得到的错误:

GroupVoter.php:

UserFormType.php :

Symfony 不会过滤表单中 CustomerGroup 字段中可用的选项。即使我的角色不允许,我也可以看到所有客户组。

编辑:也许我应该使用 'choises' 属性。我需要访问 CustomerGroupRepository 来做到这一点!

谢谢你的帮助 !

最好的,

朱利安

0 投票
2 回答
124 浏览

symfony - Doctrine QueryBuilder 计数和选民

我有一些实体,例如Device具有投票者的实体,允许当前用户访问或不访问某些Devices。

在搜索Devices 时,为了过滤,我使用了一个array_filter运行良好的函数。

但是,我想对我的Device实体进行一些统计,例如Devices by的数量Brand

我的查询没问题:

我有一个包含我的数据的数组。

但选民不适用。

如果我将用户切换到可能无法访问所有Devices 的用户,我仍然会看到相同的数字。

那么,我如何过滤我COUNT的选民请求?

Device实体:

Model实体:

Brand实体:

谢谢你的帮助 !

最好的,

朱利安

0 投票
0 回答
107 浏览

symfony4 - Symfony 4 Voter - 可用于动态权限?

我需要为我的 Symfony 4 应用程序实现一个用户权限系统。所有权限和可能的方法调用都存储在一个单独的数据库表中,还有一个交叉引用表,它决定每个用户可以执行哪些 CRUD 操作。到目前为止,我会使用 Symfony 的选民系统,但是我不确定我是否可以构建一个全局选民,它只需为传递给选民类的给定方法调用获取一个属性(比如说“编辑”)作为主题?我想做类似以下我的控制器类的事情:

在 symfony 文档中,建议每个实体创建一个选民。但是由于我的应用程序的当前架构(支持外部插件,其他开发人员可能会对其进行扩展等)我无法预测将来可能安装哪些实体,因此我无法为未知实体创建选民。

所以我想知道是否可以使用全局选民来处理这些权限检查?

0 投票
1 回答
37 浏览

symfony - 如何在 Symfony4 中返回选民的额外信息?

我有一个选民,我用它来检查当前用户是否可以访问一个对象。访问被拒绝有几个原因,我想知道控制器中的哪个。但是,投票者只能返回一个布尔值,与控制器中的 isGranted() 相同,所以我不确定我可以通过哪个通道传递我想要的额外信息。抛出异常是不行的,因为可能还有其他选民尚未被召集。

我能想到的更接近的事情是 Flash 消息,它可以用来在函数参数和返回值之外传递信息,但在这种情况下使用它们感觉就像 hack。