基于ABP框架的权限设置
需求:在界面展示中,“定向包管理”,"竞价管理",“竞拍管理”,"发布定向资源","添加竞价资源","添加竞价资源",根据当前用户登录账号判断是否分配了相应权限而展示。
如图:

如下图:在现有的“定向包管理”,"竞价管理",“竞拍管理” 的权限下 一次新增 "发布定向资源","添加竞价资源","添加竞价资源"三个权限

新增扩展权限:

1:首先定义权限变量字段

2:权限配置
/// <summary>
/// 权限配置都在这里。
/// 给权限默认设置服务
/// See <see cref="ResourceAppPermissions"/> for all permission names.
/// </summary>
public class ResourceAppAuthorizationProvider : AuthorizationProvider
{
public override void SetPermissions(IPermissionDefinitionContext context)
{
//在这里配置了Resource 的权限。
var pages = context.GetPermissionOrNull(AppPermissions.Pages) ?? context.CreatePermission(AppPermissions.Pages, L("Pages"));
var entityNameModel = pages.Children.FirstOrDefault(p => p.Name == AppPermissions.Pages_ResourceManagement)
?? pages.CreateChildPermission(AppPermissions.Pages_ResourceManagement, L("ResourceManagement"));
// 资源管理
var resource = entityNameModel.CreateChildPermission(ResourceAppPermissions.Resource, L("Resource"));
resource.CreateChildPermission(ResourceAppPermissions.Resource_CreateResource, L("CreateResource"));
resource.CreateChildPermission(ResourceAppPermissions.Resource_EditResource, L("EditResource"));
resource.CreateChildPermission(ResourceAppPermissions.Resource_DeleteResource, L("DeleteResource"));
// 竞价管理
var bidResource = resource.CreateChildPermission(ResourceAppPermissions.Resource_Bidding,
L("Resource_Bidding"));
// 添加竞价资源
bidResource.CreateChildPermission(ResourceAppPermissions.Resource_AddBidding, L("Resource_AddBidding"));
// 竞拍管理
var aucResource = resource.CreateChildPermission(ResourceAppPermissions.Resource_Auction, L("Resource_Auction"));
// 添加竞拍资源
aucResource.CreateChildPermission(ResourceAppPermissions.Resource_AddAuction, L("Resource_AddAuction"));
// 定向包管理
var DirResource = resource.CreateChildPermission(ResourceAppPermissions.Resource_Directional, L("Resource_Directional"));
// 发布定向资源
DirResource.CreateChildPermission(ResourceAppPermissions.Resource_AddDirectional, L("Resource_AddDirectional"));
}
private static ILocalizableString L(string name)
{
return new LocalizableString(name, MaterialCirculationConsts.LocalizationSourceName);
}
}
3:在JS中注入权限
// 页面权限
var _permissions = {
// 资源列表权限
create: abp.auth.hasPermission("Pages.Resource.CreateResource"),
edit: abp.auth.hasPermission("Pages.Resource.EditResource"),
'delete': abp.auth.hasPermission("Pages.Resource.DeleteResource"),
// 页面tab显示权限
bidding: abp.auth.hasPermission("Pages.Resource.Bidding"),
directional: abp.auth.hasPermission("Pages.Resource.Directional"),
auction: abp.auth.hasPermission("Pages.Resource.Auction"),
// 添加资源类型权限
addBidding: abp.auth.hasPermission("Pages.Resource.AddBidding"),
addDirectional: abp.auth.hasPermission("Pages.Resource.AddDirectional"),
addAuction: abp.auth.hasPermission("Pages.Resource.AddAuction")
};
4:前端Razor语法判断
<div class="dropdown-menu pull-right">
@if (IsGranted(ResourceAppPermissions.Resource_AddBidding))
{ <li>
<a href="/Mpa/ResourceManage/CreateOrEditResourceModal?type=0"> 添加竞价资源</a>
</li>
}
@if (IsGranted(ResourceAppPermissions.Resource_AddAuction))
{ <li>
<a href="/Mpa/ResourceManage/CreateOrEditResourceModal?type=1">添加竞拍资源 </a>
</li>
}
@if (IsGranted(ResourceAppPermissions.Resource_AddDirectional))
{ <li>
<a href="/Mpa/ResourceManage/CreateOrEditResourceModal?type=2">发布定向资源</a>
</li>
}
</div>
<div id="SettingsTabPanel" class="tabbable-line">
<ul id="uResourcesType" class="nav nav-tabs ">
@if (IsGranted(ResourceAppPermissions.Resource))
{
<li class="active">
<a href="#CachesTab" data-toggle="tab" aria-expanded="false">
资源信息
</a>
</li>
}
@if (IsGranted(ResourceAppPermissions.Resource_Auction))
{
<li class="">
<a href="#biddingTab" value="Auction" data-toggle="tab" aria-expanded="true">
竞拍管理
</a>
</li>
}
@if (IsGranted(ResourceAppPermissions.Resource_Bidding))
{
<li class="">
<a href="#DarkPatTab" value="Bidding" data-toggle="tab" aria-expanded="true">
竞价管理
</a>
</li>
}
@if (IsGranted(ResourceAppPermissions.Resource_Directional))
{
<li class="">
<a href="#OrientationPackageTab" value="Orientation" data-toggle="tab" aria-expanded="true">
定向包管理
</a>
</li>
}
</ul>
<div class="tab-content">
<div class="tab-pane active" id="CachesTab">
<div id="ResourcesTable"></div>
</div>
<div class="tab-pane" id="biddingTab">
<div id="biddingResourcesTable"></div>
</div>
<div class="tab-pane" id="DarkPatTab">
<div id="DarkPatTable"></div>
</div>
<div class="tab-pane" id="OrientationPackageTab">
<div id="OrientationPackageTable"></div>
</div>
</div>
</div>
基于ABP框架的权限设置的更多相关文章
- ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理
在前面两篇随笔<ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理>和<ABP开发框架前后端开发系列---(8)ABP框架之Winform界面的开发过程>开始 ...
- 利用代码生成工具生成基于ABP框架的代码
在前面随笔,我介绍了整个ABP优化过框架的分层模型,包括尽量简化整个ABP框架的各个层的关系,以及纳入一些基类的辅助处理,使得我们对应业务分层类或者接口尽可能减少代码,并具有生产环境所需要的基类接口, ...
- 基于abp框架的数据库种子数据初始化
目录 基于abp框架的数据库种子数据初始化 1.背景 2.参照 3.解决方案 3.1 初始化数据 3.2 依赖注入方法容器里获取数据库上下文 3.3 封装创建初始化数据列表方法 3.4 数据库中没有的 ...
- 使用代码生成工具快速生成基于ABP框架的Vue+Element的前端界面
世界上唯一不变的东西就是变化,我们通过总结变化的规律,以规律来应付变化,一切事情处理起来事半功倍.我们在开发后端服务代码,前端界面代码的时候,界面都是依照一定的规律进行变化的,我们通过抽取数据库信息, ...
- 在基于ABP框架的前端项目Vue&Element项目中采用电子签名的处理
在前面随笔介绍了<在基于ABP框架的前端项目Vue&Element项目中采用电子签章处理文件和打印处理>的处理,有的时候,我们在流程中或者一些文件签署的时候,需要签上自己的大名,一 ...
- 基于ABP框架的SignalR,使用Winform程序进行功能测试
在ABP框架里面,默认会带入SignalR消息处理技术,它同时也是ABP框架里面实时消息处理.事件/通知处理的一个实现方式,SignalR消息处理本身就是一个实时很好的处理方案,我在之前在我的Winf ...
- 在基于ABP框架的前端项目Vue&Element项目中采用日期格式处理,对比Moment.js和day.js的处理
Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样. 如果您曾经用过 Moment.js, 那么您已经知道如何使用 Day.js ...
- ABP框架 配置权限、本地语言文件、左侧菜单项
1.Framework.Core>Authorization>PermissionNames.cs 这里新增权限项 namespace Framework.Authorization { ...
- 在基于ABP框架的前端项目Vue&Element项目中采用电子签章处理文件和打印处理
在一些内部OA或者流转的文件,或者给一些客户的报价文件.合同,或者一些医院出示的给保险机构的病历资料等,有时候可能都希望快速的使用电子签章的处理方式来给文件盖上特定的印章,本篇随笔介绍基于Vue&am ...
随机推荐
- 第一次"正经面试"之发现自己的缺陷和不足
1:初试之校园招聘~~~ 如果你细心,可能发现了"正经面试"加了双引号,说起这次面试(昨天面的技术试),要从上礼拜六,距今已经一礼拜了吧.现在这个时候校园招聘已经蠢蠢欲动了吧,(说 ...
- IIS 部署ASP.Net, WebAPI, Restful API, PUT/DELETE 报405错解决办法, webapi method not allowed 405
WebDAV 是超文本传输协议 (HTTP) 的一组扩展,为 Internet 上计算机之间的编辑和文件管理提供了标准.利用这个协议用户可以通过Web进行远程的基本文件操作,如拷贝.移动.删除等.在I ...
- SpringMVC4+MyBatis+SQL Server2014+druid 监控SQL运行情况
前言 在基于SpringMVC+MyBatis的开发过程中,我们希望能看到自己手写SQL的执行情况,在开发阶段我们可以配置log4j在控制台里基于debug模式查看,那么上线后,在生产声我们想查看SQ ...
- 【iOS】7.4 定位服务->2.1.4 定位 - 官方框架CoreLocation 案例:指南针效果
本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...
- windows 下编译php扩展库pecl里的扩展memcache
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等.简单的说就是将数据调用到内 ...
- 传输层TCP协议
目录 首部格式数据单位特定注意自动重传请求ARQ具体实现发送缓存接收缓存滑动窗口确认丢失和确认迟到超时重传时间选择报文段的发送时机运输连接发送TCP请求客户端拥塞处理相关概念避免拥塞具体实现TCP 的 ...
- Eric的第一天
我叫刘志扬(ERIC),今天第一次来博客园,我是一个爱编程的小子,我使用开发工具Androidstudio(AS)我要把今后的问题记录在博客园里,欢迎大家点评,吐槽.
- AngularJS1.X学习笔记4-内置事件指令及其他
AngularJS为我们定义了一系列事件指令,方便我们对用户的操作作出响应.甚至他还有一个可选模块提供了触摸事件和手势事件的支持,为移动端开发提供了可能.现在开始学习一下AngularJS的事件指令. ...
- Android自定义ListView的Item无法响应OnItemClick的解决办法(转)
原文链接:http://www.linuxidc.com/Linux/2011-09/43205.htm 如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那 ...
- dd命令的使用简介
dd命令: convert and copy a file 用法: dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=#: block size, 复制单元大小 ...