如何从 Orchard CMS 中的代码或配方将权限分配给自定义角色?

How to assign Permissions to custom Roles from code or recipe in Orchard CMS?

上下文

我正在使用扩展的 Orchard CMS 实现一个站点。我的问题是当我尝试将 Orchard 的现有权限分配给自定义配方中的自定义角色时。

我在我的食谱中这样做:

<Roles>
    <Role Name="Profesional" Permissions="AccessAdminPanel,EditOwnContent,DeleteOwnContent,ViewOwnContent,ManageOwnBlogs,EditOwnBlogPost,EditBlogPost,PublishOwnBlogPost,PublishBlogPost,DeleteOwnBlogPost" />
    <Role Name="Manager" Permissions="AccessAdminPanel,PublishContent,DeleteContent" />
</Roles>

问题

当我在启用这些功能之前放置代码时,一些权限似乎被覆盖了,因为博客权限从 Profesional 角色中消失了。

<Roles>
    same above
</Roles>

<Feature enable="..." />

并且当将 Roles 标签移动到我的菜谱末尾时,代码在我的自定义模块上设置的权限会被菜谱末尾的代码覆盖。

这里有什么问题?有没有更好的方法来实现我的目标?

通过从 Orchard.Roles 调用角色服务,在代码中分配角色非常简单。 也看看命令,这样你就可以看到如何从你的食谱中设置命令,因为我认为你从导出硬编码角色中得到了想法...

也可以通过实现 IPermissionProvider 从模块添加权限。就像您可以使用任何 Orchard 功能一样。 通常您会在模块中看到 Permissions.cs。

我也在迁移和事件中创建了角色。

如果您要使用迄今为止从未用于设置角色和权限的方法,我会使用 Command 元素。

你看过Orchard.SetUp了吗?

启用您喜欢的任何功能,如果您的自定义模块不处理角色创建,请使用您的配方中的命令元素。

如果您要附加的权限来自非自定义模块,我会怎么做。

或者,因为您似乎手头有一些公司规则;你可以创建一个模块来抽象所有这些。

希望对你有帮助