ASP.NET MVC 生成简单的 xml 权限结构

当我的一个项目到尾声时,发现系统很多模块权限有遗漏。部分模块权限遗漏是由于前期开发速度太快,开发人员未先给模块加权限而后再编写该模块功能代码。当我们检查每个模块权限是否遗漏时,噩梦来了---- 需要花费很长的时间(功能模块太多)。于是乎我写了一个控制台权限同步工具。整体思路如下:

其实在MVC内每个ActionResult 就可以看成一个新的模块,正因为这样,因此我们可以对所有的模块进行统一管理。由于当前系统中权限树相对简单:一个父级下多个子。所以只要指定好每个ActionResult 的父亲即可。代码如下:

其中 ParentModule 这个是自定义特性类似MVC的 [Authorize]。代码如下:

1 [ParentModuleAttribute(ParentSystemModules.CustomerManage, "普通客户")]
2 public ActionResult OrdinaryCustomer ()
3 {
4 return View();
5 }
6
7 [ParentModuleAttribute(ParentSystemModules.CustomerManage, "VIP客户")]
8 public ActionResult VIPCustomer()
9 {
10 return View();
11 }
12
13 [ParentModuleAttribute(ParentSystemModules.TechnicalManage, "SQLServer")]
14 public ActionResult SQLSERVERManager()
15 {
16 return View();
17 }
18
19 [ParentModuleAttribute(ParentSystemModules.TechnicalManage, "ASP.NETMVC")]
20 public ActionResult MVCManager()
21 {
22 return View();
23 }

ParentModule 自定义特性:

1 [AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = false)]
2 public class ParentModuleAttribute : Attribute
3 {
4
5 private ParentSystemModules _mType;
6 private string _moduleTitle;
7
8 public ParentModuleAttribute(ParentSystemModules mType, string moduleTitle)
9 {
10 _mType = mType;
11 _moduleTitle = moduleTitle;
12 }
13
14 public ParentSystemModules ModuleType
15 {
16 get
17 {
18 return _mType;
19 }
20 }
21
22 public string ModuleTitle
23 {
24 get
25 {
26 return _moduleTitle;
27 }
28 }
29
30 }

其中 ParentSystemModules 是所有的父模块枚举,moduleTitle 为 当前模块名称(可以改造成资源文件,方便日后扩展)。

以上我们每建完一个 ActionResult 随即加上 ParentModuleAttribute 特性。便于下面我的同步工具可以

生成XML权限结构。

截图如下:

查看自动生成的二级xml权限结构:

整个思想主要取决于MVC自身的特点同时还应用到 .NET 特性、 反射、 LINQ 等技术。

同时还增加了检测同一个权限多次被不同的ActionResult(模块)增加的错误。

本文的例子请从 这里 下载。

posted on 2010-10-26 14:34 ryanding 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/ryanding/archive/2010/10/26/1861325.html

ASP.NET MVC 生成简单的 xml 权限结构相关推荐

  1. python批量生成,用python批量生成简单的xml文档

    最近生成训练数据时,给一批无效的背景图片生成对应的xml文档,我用python写了一个简单的批量生成xml文档的demo,遇见了意外的小问题,记录一下. 报错问题为:ImportError: No m ...

  2. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据 ...

  3. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证)...

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框 ...

  4. ASP.NET MVC+EF框架+EasyUI实现权限管理(附源码)

    前言目录 前言:时间很快,已经快到春节的时间了,这段时间由于生病,博客基本没更新,所以今天写一下我们做的一个项目吧,是对权限的基本操作的操作,代码也就不怎么说了,直接上传源码和图片展示,下面我们直接进 ...

  5. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建

    ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建 原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建    ASP.NET MV ...

  6. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除)...

    ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除) 原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过 ...

  7. ASP.NET MVC实现简单的文件上传与下载

    使用ASP.NET MVC实现简单的文件上传与下载. 1.上传文件HTML <form action='@Url.Action("Upload", "File&qu ...

  8. ASP.NET MVC 企业级实战 —— 创建用户权限管理范例程序(三)

    上一篇,主要讲解了模型的创建和利用Entity Framework来操作数据库,这篇我们会讲解如何创建控制器和视图. 由于最近很多网友反馈在VS 2012 无法安装NBlock框架模版,故再次声明,N ...

  9. Nancy和ASP.NET MVC的简单对比

    Nancy的优势在哪里?和微软的MVC比有什么不同,哪个更好?Nancy是否可以脱离IIS等等,那么今天就拿MVC和Nancy做个简单的对比吧. 今天主要讲理论的东西,不写代码,文章中所提到的配置,只 ...

最新文章

  1. 优秀!这些高校诞生一批 “80后”总裁!Top3均来自人工智的黄埔军校!
  2. html5 popup,popup.js-jQuery和CSS3可互动的3D弹出窗口插件
  3. 华硕首款平板电脑周五开售
  4. 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem C. Equivalent Cards 计算几何
  5. 爬虫入门四(多线程爬虫)
  6. Android应用发布渠道汇总(更新中)
  7. 支付接口调用成功后如何让前端知道_开发口中的「接口」到底是什么
  8. c语言lnk1104无法打开exe,error LNK1104: 无法打开文件“C:\Users\Administrator\Desktop\....\\xxxx.exe”...
  9. setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds区别
  10. 攻击防御实例——SQL注入
  11. 网络安全实验---PGP 实现邮件加密和签名
  12. Linux基础命令01(ls , cd,clear,cat等)
  13. STM32之vl53l0x读取距离
  14. mock.js的使用
  15. Alist简单使用指南
  16. WordArt与everything联用生成含中文的词云
  17. 深度学习论文精读(4):MobileNetV2
  18. 高通再次「押宝」中科创达,挑战智能驾驶软硬件全栈方案
  19. OpenStack-国基北盛搭建,跑脚本安装各组件步骤详解
  20. ElasticSearch7.x 从部署到开发

热门文章

  1. 架构之道(4) - 最後的最後,让大家都知道自己在做什麽
  2. 重大通知:社交系统ThinkSNS+ 发布公告!
  3. memcache的分布式缓存问题
  4. q-LDPC实验进展
  5. 纯数学教程 Page 203 例XLI (6)
  6. 這個日本味超濃的建築竟然是台灣的小學
  7. pm2常用的命令用法介绍
  8. Android - MVP个人愚见
  9. Chapter 2 Open Book——16
  10. CodeForces 721C Journey