Magnolia 的 AccessDefinition class 中弃用的角色

Deprecated roles from AccessDefinition class of Magnolia

我正在检查 AppDescriptor 的权限 属性,发现 AccessDefinition 中的 getRoles 实际上已被弃用。有谁知道为什么它被弃用?这是否意味着我们不应该在应用程序中设置权限角色?我问这个是因为我的代码想要获取应用程序中定义的角色,我不知道我是否可以使用这个角色,即使它已经被弃用了。

来自AccessDefinition.java的代码:

/** @deprecated */
@Deprecated
Collection<String> getRoles();

您应该通过相同的方法签名在 User 下设置它们。

User.getRoles();

Does it mean that we shouldn't be setting the permission roles in the app?

不,您可以设置 运行 应用所需的角色。

方法已被弃用,因为它只会 return 角色配置为 运行 应用程序所必需的角色,而不管是否设置了超级用户使用该应用程序的覆盖权限。

hasAccess(User user) 方法的引入是为了允许对更复杂的规则进行此类检查(例如,考虑超级用户覆盖权限或 AccessDefinition 的自定义实现可能想要引入的任何其他规则),并在同时保持 getRoles() 方法普通(如 returning 用 setRoles(Collection<String> roles) 设置的)。

这就是原因。