• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

     其实在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(模块)增加的错误。

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.NETMVC引入JavaScript(.JS)文件发布时间:2022-07-10
下一篇:
关于ASP.Net中页面事件加载的先后顺序发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap