我使用扩展的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标记移动到我的食谱末尾时,我的自定义模块上的代码设置的权限会被食谱末尾的权限覆盖。
这里的问题是什么?有没有更好的方法来实现我的目标?
答案 0 :(得分:1)
通过从Orchard.Roles调用角色服务,在代码中分配角色非常简单。 看看命令也是如此,你会看到如何从你的食谱中设置命令,因为我认为你从出口编码角色中得到了想法......
只需实现IPermissionProvider,即可从模块添加权限。非常像任何Orchard功能都可以使用。 通常,您将在模块中看到Permissions.cs。
我也在迁移和事件中创建了角色。
如果要使用迄今为止从未用于设置角色和权限的配方,我会使用Command元素。
你看过Orchard.SetUp吗?
启用您喜欢的任何功能,如果您的自定义模块不处理角色创建,请使用配方中的命令元素。
如果您要附加的权限来自非自定义模块,我会怎么做。
或者,因为您似乎有一些公司规则;你可以创建一个模块来抽象所有这些。
希望有所帮助