ylbtech-Code-NFine:NFine权限控制
1.返回顶部
1、
NFine框架研究
1.前台业务操作
1.1 系统菜单配置方法

1.2 菜单管理配置方法
1.2.1 按钮管理
1.2.2 新增按钮
2.后台逻辑实现
2.1 菜单绑定展示
/Home/Index
/Content/js/index.js 对应操作方法
refer /Content/js/framework-clientdata.js 客户端数据
functionGetLoadNav() {var data =top.clients.authorizeMenu;var _html = "";$.each(data,function(i) {var row =data[i];if (row.F_ParentId == "0") {_html+= '<li>';_html+= '<a data-id="' + row.F_Id + '" href="#" class="dropdown-toggle"><i class="' + row.F_Icon + '"></i><span>' + row.F_FullName + '</span><i class="fa fa-angle-right drop-icon"></i></a>';var childNodes =row.ChildNodes;if (childNodes.length > 0) {_html+= '<ul class="submenu">';$.each(childNodes,function(i) {var subrow =childNodes[i];_html+= '<li>';_html+= '<a class="menuItem" data-id="' + subrow.F_Id + '" href="' + subrow.F_UrlAddress + '" data-index="' + subrow.F_SortCode + '">' + subrow.F_FullName + '</a>';_html+= '</li>';});_html+= '</ul>';}_html+= '</li>';}});$("#sidebar-nav ul").prepend(_html);
}

2.2 按钮绑定展示-举例:架构管理
2.2.1 /Areas/SystemManage/Organiz/Index
2.2.2 1/2 /Content/js/framework-clientdata.js 客户端数据
var clients =[];
$(function() {clients=$.clientsInit();
})
$.clientsInit= function() {var dataJson ={dataItems: [],organize: [],role: [],duty: [],user: [],authorizeMenu: [],authorizeButton: []};var init = function() {$.ajax({url:"/ClientsData/GetClientsDataJson",type:"get",dataType:"json",async:false,success:function(data) {dataJson.dataItems=data.dataItems;dataJson.organize=data.organize;dataJson.role=data.role;dataJson.duty=data.duty;dataJson.authorizeMenu=eval(data.authorizeMenu);dataJson.authorizeButton=data.authorizeButton;}});}init();returndataJson;
}

2.2.2 2/2 /Content/js/framework-ui.js 按钮控制函数
$.fn.authorizeButton = function() {var moduleId = top.$(".NFine_iframe:visible").attr("id").substr(6);var dataJson =top.clients.authorizeButton[moduleId];var $element = $(this);$element.find('a[authorize=yes]').attr('authorize', 'no');if (dataJson !=undefined) {$.each(dataJson,function(i) {$element.find("#" + dataJson[i].F_EnCode).attr('authorize', 'yes');});}$element.find("[authorize=no]").parents('li').prev('.split').remove();$element.find("[authorize=no]").parents('li').remove();$element.find('[authorize=no]').remove();
}

3.访问控制
/App_Start/01 Handler/HandlerAuthorizeAttribute.cs
usingNFine.Application.SystemManage;usingNFine.Code;usingSystem.Text;usingSystem.Web;usingSystem.Web.Mvc;namespaceNFine.Web
{public classHandlerAuthorizeAttribute : ActionFilterAttribute{public bool Ignore { get; set; }public HandlerAuthorizeAttribute(bool ignore = true){Ignore=ignore;}public override voidOnActionExecuting(ActionExecutingContext filterContext){if(OperatorProvider.Provider.GetCurrent().IsSystem){return;}if (Ignore == false){return;}if (!this.ActionAuthorize(filterContext)){StringBuilder sbScript= newStringBuilder();sbScript.Append("<script type='text/javascript'>alert('很抱歉!您的权限不足,访问被拒绝!');</script>");filterContext.Result= new ContentResult() { Content =sbScript.ToString() };return;}}private boolActionAuthorize(ActionExecutingContext filterContext){var operatorProvider =OperatorProvider.Provider.GetCurrent();var roleId =operatorProvider.RoleId;var moduleId = WebHelper.GetCookie("nfine_currentmoduleid");var action = HttpContext.Current.Request.ServerVariables["SCRIPT_NAME"].ToString();return newRoleAuthorizeApp().ActionValidate(roleId, moduleId, action);}}
}

2、

2.返回顶部
3.返回顶部
4.返回顶部
5.返回顶部
6.返回顶部
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/storebook/p/9405033.html

Code-NFine:NFine权限控制相关推荐

  1. .NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制

    项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩过webAPI,但是领导要求必须用这个(具体原因鬼知道),只好硬着头皮上了. 最近刚做完权限这一块,分享出来给大家.欢 ...

  2. Keycloak简单几步实现对Spring Boot应用的权限控制

    我们在上一篇初步尝试了keycloak,手动建立了一个名为felord.cn的realm并在该realm下建了一个名为felord的用户.今天就来尝试一下对应的Spring Boot Adapter, ...

  3. Django 基于角色的权限控制

    有一种场景, 要求为用户赋予一个角色, 基于角色(比如后管理员,总编, 编辑), 用户拥有相应的权限(比如管理员拥有所有权限, 总编可以增删改查, 编辑只能增改, 有些页面的按钮也只有某些角色才能查看 ...

  4. 使用service实现登录、权限控制

    2019独角兽企业重金招聘Python工程师标准>>> 文章来源:http://blog.ddlisting.com 官网对于登录.用户权限的介绍只有一段简单的说明,并没有详细说明如 ...

  5. Apache ZooKeeper - ZK的ACL权限控制( Access Control List )

    文章目录 概述 权限模式(Scheme) 口令验证 范围验证 Super权限模式 授权对象(ID) 权限信息(Permission) ACL相关命令 跳过ACL检测 实操ACL 生成授权ID 方式一 ...

  6. SAP用户权限控制大解析及权限进阶分析

    通常basis会使用PFCG做权限管理,你保存时会产生一个系统外的profile name,而且,SU01时用户有profile 和role两栏位. 这些个profile name ,profile, ...

  7. 用SAP Authority Object 对权限控制

    早就听说SAP Authority Object 对权限控制比较好用,今天有幸实践下. 下面是一个简单但是完整的Authority-check的小例子: 1.创建Data Element------- ...

  8. SpringBoot-Security 具体案例、 实现安全框架、权限控制、aop切入

    SpringBoot-Security 具体案例. 实现安全框架.权限控制.aop切入 SpringBoot-Security介绍 Security 官方序言 ​ 安全是一个不断变化的目标,追求一个全 ...

  9. RBAC、控制权限设计、权限表设计 基于角色权限控制和基于资源权限控制的区别优劣

    RBAC.控制权限设计.权限表设计 基于角色权限控制和基于资源权限控制的区别优劣 一.介绍 二.基于角色的权限设计 三.基于资源的权限设计 四.主体.资源.权限关系图 主体.资源.权限相关的数据模型 ...

  10. Apache Shiro的运行流程和权限控制方式分析

    Apache Shiro的运行流程和权限控制方式分析 Shiro的架构有3个主要的概念: Subject SecurityManager Realms 下面的关系图是关于这些组件是如何交互的高级概述. ...

最新文章

  1. 【pandas学习笔记】DataFrame
  2. 安装没有在R包仓库CRAN上托管的R包
  3. struts+hibernate+oracle+easyui实现lazyout组件的简单案例——EmpDao层代码
  4. 将类似html数据打印机,机器人和3D打印机的架构有哪些相似之处
  5. python设计模式12-代理模式
  6. java面试要点---Spring体系知识点复习,IOC,AOP---随时更新
  7. 三菱plc编程软件gx-developer在win10中无法使用及工程无法建立解决方法
  8. 计算机应用基础信息素养,计算机应用基础:信息素养+Office 2013办公自动化
  9. 射频电路学习之滤波电路
  10. linux下如何查看tlq服务,谁能跟我讲解一下bashrc?
  11. html怎么取消打印空白页,怎么取消打印空白页:如何删除Excel工作表中的空白页...
  12. pinia - 大菠萝的使用
  13. iOS模块化灰度 A/BTest
  14. Linux平台下快速搭建FTP服务器
  15. 解决Powershell前面没有base,无法激活虚拟环境问题
  16. 【英语竞赛】专项练习之听力
  17. 第一章 TCG 规范科普解读
  18. Postgres-XL数据库GTM——GTM and Global Transaction Management
  19. 修者和修士不同,修士又称修道者
  20. [宋史学习] 谁制造了“天子为点检”的木牌?

热门文章

  1. Linux上机考试试题
  2. 安装ANSYS19.0的正确方法(附下载)
  3. 2021华为软挑-成渝复赛复盘
  4. Spine 骨骼动画
  5. VMware安装时出现 “您无权输入许可证密钥,请使用系统管理员账户重试”解决方案
  6. MP算法与OMP算法讲解一
  7. jdk在线帮助文档地址
  8. 通过CN3口直接控制台达伺服电机A2-M(一)
  9. CXF WebService视频教程,自己录的(更新第7集 异步调用 2009.1.15)。
  10. 单片机的c语言程序控制直流电机,(单片机控制直流电机)毕业论文.doc