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

时间:2015-07-17 14:55:21

标签: permissions orchardcms recipe

上下文

我使用扩展的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标记移动到我的食谱末尾时,我的自定义模块上的代码设置的权限会被食谱末尾的权限覆盖。

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

1 个答案:

答案 0 :(得分:1)

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

只需实现IPermissionProvider,即可从模块添加权限。非常像任何Orchard功能都可以使用。 通常,您将在模块中看到Permissions.cs。

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

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

你看过Orchard.SetUp吗?

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

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

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

希望有所帮助