Orchard Core 自定义权限配置
在我们为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 自定义权限配置的更多相关文章
- Orchard Core 配置项说明
Orchard Core使用IShellConfiguration扩展了ASP.NET Core IConfiguration,以允许在应用程序范围的配置之上进行特定于租户的配置.虽然本文档使用Orc ...
- Asp.net Core 系列之--5.认证、授权与自定义权限的实现
ChuanGoing 2019-11-24 asp.net core系列已经来到了第五篇,通过之前的基础介绍,我们了解了事件订阅/发布的eventbus整个流程,初探dapper ORM实现,并且简单 ...
- Orchard 前台权限与自定义权限
一:关于前台权限 1:只允许自己看到 首先,我们需要确定在 Role 设置页面,用户所对应的 View Page by others 和 View all content 未被选中.备注,我们首先和得 ...
- .Net Core 自定义配置源从配置中心读取配置
配置,几乎所有的应用程序都离不开它..Net Framework时代我们使用App.config.Web.config,到了.Net Core的时代我们使用appsettings.json,这些我们再 ...
- 【ASP.NET Core】自定义的配置源
本文的主题是简单说说如何实现 IConfigurationSource.IConfigurationProvider 接口来自定义一个配置信息的来源,后面老周给的示例是实现用 CSV 文件进行应用配置 ...
- 配置Orchard Core 最新的包资源
添加预览包源 在本文中,我们将添加一个指向预览包的新包源. 与从主分支构建的NuGet上的代码相比,每次在dev分支上提交一些代码时都会构建预览包. 它们是最新的版本,但不是最稳定的,可以包含突破性的 ...
- 发布基于Orchard Core的友浩达科技官网
2018.9.25 日深圳市友浩达科技有限公司发布基于Orchard Core开发的官网 http://www.weyhd.com/. 本篇文章为你介绍如何基于Orchard Core开发一个公司网站 ...
- 如何实现Orchard Core CMS的全文索引
Orchard Core提供了Lucene功能,允许您在网站上进行全文搜索.大多数情况下,在运行博客或简单的代理网站时,您可能需要在页面内容中进行搜索.在Orchard Core中,您可以使用Liqu ...
- asp.net core mvc权限控制:权限控制介绍
在进行业务软件开发的时候,都会涉及到权限控制的问题,asp.net core mvc提供了相关特性. 在具体介绍使用方法前,我们需要先了解几个概念: 1,claim:英文翻译过来是声明的意思,一个cl ...
随机推荐
- 【原】关于AdaBoost的一些再思考
一.Decision Stumps: Decision Stumps称为单层分类器,主要用作Ensemble Method的组件(弱分类器).一般只进行一次判定,可以包含两个或者多个叶结点.对于离散数 ...
- [sso]搭建CAS单点服务器
1.下载服务器端文件 Cas Client下载:http://developer.jasig.org/cas-clients/ CAS Server:cas-server-4.0.0-release. ...
- tensorflow模型量化
tensorflow模型量化/DATA/share/DeepLearning/code/tensorflow/bazel-bin/tensorflow/tools/graph_transforms/t ...
- 正整数序列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次存放的值,每次 ...
- traff.sh
#!/bin/bash #网络监控 while [ "1" ] do eth=$1 RXpre=$(cat /proc/net/dev | grep $eth | tr : &qu ...
- MFC打开文件选择框和多选框,保存文件夹的选择,保存文件路径的选择
CString defaultDir = "C:\\"; //默认打开的文件路径 CString fileName = ""; //默认打开的文件名 CStri ...
- js dom 观察者属性 MutationObserver
MDN上说的很清楚 MutationObserver给开发者们提供了一种能在某个范围内的DOM树发生变化时作出适当反应的能力.该API设计用来替换掉在DOM3事件规范中引入的Mutation事件 co ...
- MySQL主从同步添加至zabbix监控
参考文档:https://blog.csdn.net/hellowidow_2020/article/details/78985368 https://www.cnblogs.com/cdjia ...
- DB2 rollforward 命令使用详解
DB2 rollforward 命令使用详解 原文:https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1003wuc ...
- 如何打jar包 学习笔记
jar包是由.class文件压缩而成.要查看jar包中的内容,使用压缩工具 解压缩即可.也可以做修改,并重新打成jar包.总结一下最近学到的一些打jar包的方法: 一.DOS下使用jar命令 打jar ...