Orchard 前台权限与自定义权限

简介: 一:关于前台权限 1:只允许自己看到 首先,我们需要确定在 Role 设置页面,用户所对应的 View Page by others 和 View all content 未被选中。备注,我们首先和得设置 Anonymous 和 Authenticated 的这两个的权限,这两项也未被选中。

一:关于前台权限

1:只允许自己看到

首先,我们需要确定在 Role 设置页面,用户所对应的 View Page by others 和 View all content 未被选中。备注,我们首先和得设置 Anonymous 和 Authenticated 的这两个的权限,这两项也未被选中。

这样一来,我们可以达到整个站点,我们只能看到自己的东西,如下:

image

而如果是 Admin 等全权限登录的,应该是这样的:

image

2:只允许某个角色看到

同理1。

 

二:关于自定义权限

首先,我们需要在模块的根目录下创建文件 Permissions:

public class Permissions : IPermissionProvider {
    public static readonly Permission ManageBlogs = new Permission { Description = "Manage blogs for others", Name = "ManageBlogs" };
    public static readonly Permission ManageOwnBlogs = new Permission { Description = "Manage own blogs", Name = "ManageOwnBlogs", ImpliedBy = new[] { ManageBlogs } };

    public static readonly Permission PublishBlogPost = new Permission { Description = "Publish or unpublish blog post for others", Name = "PublishBlogPost", ImpliedBy = new[] { ManageBlogs } };
    public static readonly Permission PublishOwnBlogPost = new Permission { Description = "Publish or unpublish own blog post", Name = "PublishOwnBlogPost", ImpliedBy = new[] { PublishBlogPost, ManageOwnBlogs } };
    public static readonly Permission EditBlogPost = new Permission { Description = "Edit blog posts for others", Name = "EditBlogPost", ImpliedBy = new[] { PublishBlogPost } };
    public static readonly Permission EditOwnBlogPost = new Permission { Description = "Edit own blog posts", Name = "EditOwnBlogPost", ImpliedBy = new[] { EditBlogPost, PublishOwnBlogPost } };
    public static readonly Permission DeleteBlogPost = new Permission { Description = "Delete blog post for others", Name = "DeleteBlogPost", ImpliedBy = new[] { ManageBlogs } };
    public static readonly Permission DeleteOwnBlogPost = new Permission { Description = "Delete own blog post", Name = "DeleteOwnBlogPost", ImpliedBy = new[] { DeleteBlogPost, ManageOwnBlogs } };

    public static readonly Permission MetaListBlogs = new Permission { ImpliedBy = new[] { EditBlogPost, PublishBlogPost, DeleteBlogPost }, Name = "MetaListBlogs"};
    public static readonly Permission MetaListOwnBlogs = new Permission { ImpliedBy = new[] { EditOwnBlogPost, PublishOwnBlogPost, DeleteOwnBlogPost }, Name = "MetaListOwnBlogs" };

    public virtual Feature Feature { get; set; }

    public IEnumerable<Permission> GetPermissions() {
        return new[] {
            ManageOwnBlogs,
            ManageBlogs,
            EditOwnBlogPost,
            EditBlogPost,
            PublishOwnBlogPost,
            PublishBlogPost,
            DeleteOwnBlogPost,
            DeleteBlogPost,
        };
    }

    public IEnumerable<PermissionStereotype> GetDefaultStereotypes() {
        return new[] {
            new PermissionStereotype {
                Name = "Administrator",
                Permissions = new[] {ManageBlogs}
            },
            new PermissionStereotype {
                Name = "Editor",
                Permissions = new[] {PublishBlogPost,EditBlogPost,DeleteBlogPost}
            },
            new PermissionStereotype {
                Name = "Moderator",
            },
            new PermissionStereotype {
                Name = "Author",
                Permissions = new[] {ManageOwnBlogs}
            },
            new PermissionStereotype {
                Name = "Contributor",
                Permissions = new[] {EditOwnBlogPost}
            },
        };
    }

}

其次,我们需要在控制器中,为服务设定权限,如:

public AdminController(IMyService myService, IOrchardServices orchardServices) { _myService = myService; Services = orchardServices; }

。。。

Services.Authorizer.Authorize(Permissions.SomeModulePermission, T("Some operation failed"));

 

三:获取当前登录用户的角色信息

 

四:对 PART 设定权限

 

至此,ORCHARD 已经完全控制了所以的显式和功能权限,包括页面上的 PART部分。

 

参考:

http://docs.orchardproject.net/Documentation/Developer-FAQ

http://orchard.codeplex.com/discussions/547703

http://orchard.codeplex.com/discussions/390754

Creative Commons License本文基于 Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 http://www.cnblogs.com/luminji(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。
目录
相关文章
|
4月前
|
SQL
若依框架---角色与权限
若依框架---角色与权限
112 0
|
5月前
|
Kubernetes API 数据安全/隐私保护
k8s学习-基于角色的权限控制RBAC(概念,模版,创建,删除等)
k8s学习-基于角色的权限控制RBAC(概念,模版,创建,删除等)
58 0
|
5月前
|
存储 安全 机器人
Harbor2.2 用户角色权限速查
Harbor2.2 用户角色权限速查
115 0
|
6月前
|
SQL 存储 数据库
使用Forms设置不同角色具有不同的权限
使用Forms设置不同角色具有不同的权限
52 0
|
Android开发 数据安全/隐私保护 开发者
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )(一)
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )(一)
364 0
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )(一)
|
前端开发 JavaScript 算法
如何实现后台管理系统的权限路由和权限菜单
本文是继 前端如何一键生成多维度数据可视化分析报表 实战的最后一篇文章, 主要介绍如何实现后台管理系统的权限路由和权限菜单. 希望通过这3篇文章的复盘和实战, 可以让大家开发企业应用的时候更加游刃有余.
353 0
|
Android开发
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )(二)
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )(二)
363 0
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )(二)
|
前端开发 关系型数据库 数据安全/隐私保护
SpringBoot-Security-用户权限分配-查找用户的菜单权限
本章实现的功能是,某个用户登录时,如何查找该用户的菜单权限 Spring security认证过程 1、用户使用用户名和密码进行登录。2、Spring Security将获取到的用户名和密码封装成一个实现了Authentication接口的UsernamePasswordAuthenticationToken。
6341 0