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

如图:

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

新增扩展权限:

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框架的权限设置的更多相关文章

  1. ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理

    在前面两篇随笔<ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理>和<ABP开发框架前后端开发系列---(8)ABP框架之Winform界面的开发过程>开始 ...

  2. 利用代码生成工具生成基于ABP框架的代码

    在前面随笔,我介绍了整个ABP优化过框架的分层模型,包括尽量简化整个ABP框架的各个层的关系,以及纳入一些基类的辅助处理,使得我们对应业务分层类或者接口尽可能减少代码,并具有生产环境所需要的基类接口, ...

  3. 基于abp框架的数据库种子数据初始化

    目录 基于abp框架的数据库种子数据初始化 1.背景 2.参照 3.解决方案 3.1 初始化数据 3.2 依赖注入方法容器里获取数据库上下文 3.3 封装创建初始化数据列表方法 3.4 数据库中没有的 ...

  4. 使用代码生成工具快速生成基于ABP框架的Vue+Element的前端界面

    世界上唯一不变的东西就是变化,我们通过总结变化的规律,以规律来应付变化,一切事情处理起来事半功倍.我们在开发后端服务代码,前端界面代码的时候,界面都是依照一定的规律进行变化的,我们通过抽取数据库信息, ...

  5. 在基于ABP框架的前端项目Vue&Element项目中采用电子签名的处理

    在前面随笔介绍了<在基于ABP框架的前端项目Vue&Element项目中采用电子签章处理文件和打印处理>的处理,有的时候,我们在流程中或者一些文件签署的时候,需要签上自己的大名,一 ...

  6. 基于ABP框架的SignalR,使用Winform程序进行功能测试

    在ABP框架里面,默认会带入SignalR消息处理技术,它同时也是ABP框架里面实时消息处理.事件/通知处理的一个实现方式,SignalR消息处理本身就是一个实时很好的处理方案,我在之前在我的Winf ...

  7. 在基于ABP框架的前端项目Vue&Element项目中采用日期格式处理,对比Moment.js和day.js的处理

    Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持完全一样. 如果您曾经用过 Moment.js, 那么您已经知道如何使用 Day.js ...

  8. ABP框架 配置权限、本地语言文件、左侧菜单项

    1.Framework.Core>Authorization>PermissionNames.cs 这里新增权限项 namespace Framework.Authorization { ...

  9. 在基于ABP框架的前端项目Vue&Element项目中采用电子签章处理文件和打印处理

    在一些内部OA或者流转的文件,或者给一些客户的报价文件.合同,或者一些医院出示的给保险机构的病历资料等,有时候可能都希望快速的使用电子签章的处理方式来给文件盖上特定的印章,本篇随笔介绍基于Vue&am ...

随机推荐

  1. SpringMVC搭建+实例

    想做一点自己喜欢的东西,研究了一下springMVC,所以就自己搭建一个小demo,可供大家吐槽. 先建一个WEB工程,这个相信大家都会,这里不在多说. 去网上下载spring jar包,然后在WEB ...

  2. lsb_release 命令找不到

    yum install redhat-lsb -y 参考:http://blog.chinaunix.net/uid-20606164-id-3485376.html

  3. C#关于AutoResetEvent的使用介绍(用AutoResetEvent实现同步)

    前几天碰到一个线程的顺序执行的问题,就是一个异步线程往A接口发送一个数据请求.另外一个异步线程往B接口发送一个数据请求,当A和B都执行成功了,再往C接口发送一个请求.说真的,一直做BS项目,对线程了解 ...

  4. swig编译GDAL的C#库时遇到的代码安全问题及解决方法

    之前一直用的是别人编译好的gdal库开发,今天自己编译了gdal的2.0.0版本,踩了不少坑,但总算解决了. 编译方法主要参考http://blog.csdn.net/liminlu0314/arti ...

  5. SVN使用小记

    SVN(Subversion)是优秀的版本控制工具,之前在eclipse里面项目管理的时候,File-->Import-->SVN-->从SVN检出项目-->创建新的资源库位置 ...

  6. PAT乙级练习1001

    1001. 害死人不偿命的(3n+1)猜想 (15) 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去, ...

  7. if与switch的性能比较

    前言 之前学习Java时,遇到了个问题,有点纠结.当if与switch都实现相同的功能时,该改采用哪种方法实现?我并不懂得如何准确测量两者之间的性能区别,便在OlineJudge上找条该类型的题,来测 ...

  8. 老李推荐:第1章3节《MonkeyRunner源码剖析》概述:架构

    老李推荐:第1章3节<MonkeyRunner源码剖析>概述:架构   原理架构 MonkeyRunner使用起来非常的简单,只需要导入以下几个类基本上就能满足测试脚本编写的需求,比如: ...

  9. sublime Text3插件无法安装解决方法(提示There are no packages available installation)

    第一步 在sublime Text3界面按"ctrl+."出现一个输入框界面 第二步 在输入框输入: import urllib.request,os,hashlib; h = ' ...

  10. Angular4.0.0发布总览文章

    翻译自angular.io上的关于4.0.0版本发布的文章,内容主要是介绍了4.0.0版本下的改进以及接下来还会有的其他更新,4.0.0其实已经出来好多天了,截止目前都已经到了4.0.1版本了,这也是 ...