在我们为Orchard Core配置了一个新的Module之后,我们要考虑的是谁可以访问这个Module,那么这里就涉及到了一个权限的配置。如下图,添加了自定义的权限:

Orchard Core源码:https://github.com/OrchardCMS/OrchardCore

我们先看源码可以帮助我们了解这是如何做的。到src---->OrchardCore.Modules下面找到OrchardCore.Roles或者OrchardCore.Contents(也可以参考其他模块)。

以OrchardCore.Roles为例,在控制器中找到了如下一段,这应该就是控制权限的。

再找到当前模块下的Permissions.cs这个类,发现这个Permissions.cs这个类实现了IPermissionProvider这个接口,并且在Startup.cs中注册了这个Permissions.cs

按照这个思路,我们也可以自己自定义一个权限了。先建一个Permissions.cs类,实现IPermissionProvider接口

public class Permissions : IPermissionProvider
{
public static readonly Permission ManageRoles = new Permission("ManageRoles", "Managing");//首先一定要有一个基本的权限
public static readonly Permission APIRoles = new Permission("APIRoles", "API", new[] { ManageRoles });//然后定义一个权限,这个权限隐含(包含)上面那个权限,这个好像是规定这么写的,不然会报错
public IEnumerable<PermissionStereotype> GetDefaultStereotypes()//为对应的角色默认勾不勾选自定义的权限,下面默认不勾选,如果要默认勾选,那么在Name的下一行加上Permissions = new[] { XXX }
{
return new[] {
new PermissionStereotype {
Name = "Administrator",
},
new PermissionStereotype {
Name = "Editor",
},
new PermissionStereotype {
Name = "Moderator"
},
new PermissionStereotype {
Name = "Author",
},
new PermissionStereotype {
Name = "Contributor",
},
new PermissionStereotype {
Name = "Authenticated",
},
new PermissionStereotype {
Name = "Anonymous",
},
};
} public IEnumerable<Permission> GetPermissions()
{
return new[] { ManageRoles, APIRoles };
}
}

在Controller中对需要权限验证的地方加上

public async Task<IActionResult> Index()
{
  if (!await _authorizationService.AuthorizeAsync(User, Permissions.APIRoles))
  {
    return Unauthorized();
  }

  return Content("hihihi");
}

 

然后在Startup.cs的ConfigureServices中加上如下代码

services.AddScoped<IPermissionProvider, WarehouseAPI.Permissions>();  

在源码中,Permissions.cs是注册在了当前模块的Startup.cs中,我一开始也是,但是发现没有注册进去,之后在web项目中的Startup.cs中注册才有效果,这个问题有哪位大神可以讨论一下吗?

Orchard Core 自定义权限配置的更多相关文章

  1. Orchard Core 配置项说明

    Orchard Core使用IShellConfiguration扩展了ASP.NET Core IConfiguration,以允许在应用程序范围的配置之上进行特定于租户的配置.虽然本文档使用Orc ...

  2. Asp.net Core 系列之--5.认证、授权与自定义权限的实现

    ChuanGoing 2019-11-24 asp.net core系列已经来到了第五篇,通过之前的基础介绍,我们了解了事件订阅/发布的eventbus整个流程,初探dapper ORM实现,并且简单 ...

  3. Orchard 前台权限与自定义权限

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

  4. .Net Core 自定义配置源从配置中心读取配置

    配置,几乎所有的应用程序都离不开它..Net Framework时代我们使用App.config.Web.config,到了.Net Core的时代我们使用appsettings.json,这些我们再 ...

  5. 【ASP.NET Core】自定义的配置源

    本文的主题是简单说说如何实现 IConfigurationSource.IConfigurationProvider 接口来自定义一个配置信息的来源,后面老周给的示例是实现用 CSV 文件进行应用配置 ...

  6. 配置Orchard Core 最新的包资源

    添加预览包源 在本文中,我们将添加一个指向预览包的新包源. 与从主分支构建的NuGet上的代码相比,每次在dev分支上提交一些代码时都会构建预览包. 它们是最新的版本,但不是最稳定的,可以包含突破性的 ...

  7. 发布基于Orchard Core的友浩达科技官网

    2018.9.25 日深圳市友浩达科技有限公司发布基于Orchard Core开发的官网 http://www.weyhd.com/. 本篇文章为你介绍如何基于Orchard Core开发一个公司网站 ...

  8. 如何实现Orchard Core CMS的全文索引

    Orchard Core提供了Lucene功能,允许您在网站上进行全文搜索.大多数情况下,在运行博客或简单的代理网站时,您可能需要在页面内容中进行搜索.在Orchard Core中,您可以使用Liqu ...

  9. asp.net core mvc权限控制:权限控制介绍

    在进行业务软件开发的时候,都会涉及到权限控制的问题,asp.net core mvc提供了相关特性. 在具体介绍使用方法前,我们需要先了解几个概念: 1,claim:英文翻译过来是声明的意思,一个cl ...

随机推荐

  1. 【原】关于AdaBoost的一些再思考

    一.Decision Stumps: Decision Stumps称为单层分类器,主要用作Ensemble Method的组件(弱分类器).一般只进行一次判定,可以包含两个或者多个叶结点.对于离散数 ...

  2. [sso]搭建CAS单点服务器

    1.下载服务器端文件 Cas Client下载:http://developer.jasig.org/cas-clients/ CAS Server:cas-server-4.0.0-release. ...

  3. tensorflow模型量化

    tensorflow模型量化/DATA/share/DeepLearning/code/tensorflow/bazel-bin/tensorflow/tools/graph_transforms/t ...

  4. 正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,如何生成Q中的前几项

    思路分析:可以与归并排序联系起来,给定两个变量A.B,变量A轮着存放:a*1,a*2,a*3,……变量组B轮着存放:b*1,b*2,b*3,……有两个整数i.j,分别代表A.B第i.j次存放的值,每次 ...

  5. traff.sh

    #!/bin/bash #网络监控 while [ "1" ] do eth=$1 RXpre=$(cat /proc/net/dev | grep $eth | tr : &qu ...

  6. MFC打开文件选择框和多选框,保存文件夹的选择,保存文件路径的选择

    CString defaultDir = "C:\\"; //默认打开的文件路径 CString fileName = ""; //默认打开的文件名 CStri ...

  7. js dom 观察者属性 MutationObserver

    MDN上说的很清楚 MutationObserver给开发者们提供了一种能在某个范围内的DOM树发生变化时作出适当反应的能力.该API设计用来替换掉在DOM3事件规范中引入的Mutation事件 co ...

  8. MySQL主从同步添加至zabbix监控

    参考文档:https://blog.csdn.net/hellowidow_2020/article/details/78985368    https://www.cnblogs.com/cdjia ...

  9. DB2 rollforward 命令使用详解

    DB2 rollforward 命令使用详解 原文:https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1003wuc ...

  10. 如何打jar包 学习笔记

    jar包是由.class文件压缩而成.要查看jar包中的内容,使用压缩工具 解压缩即可.也可以做修改,并重新打成jar包.总结一下最近学到的一些打jar包的方法: 一.DOS下使用jar命令 打jar ...