博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爱上MVC3系列~使用Func<string, HelperResult>实现访问权限的设计
阅读量:6915 次
发布时间:2019-06-27

本文共 2665 字,大约阅读时间需要 8 分钟。

这个文章事实上也是一个系列,主要介绍小微对于MVC3上的权限设计方案,如对Action的访问权限,对PartialView的访问权限,和我最近研究的

对页面中Html块级访问权限!

一 提供好的~Action与Controller加访问权限

二 扩展MVC中的Html.Action,为分部视图作访问权限

三 扩展MVC的HtmlHelper,为页面某块HTML块(闭合的块)加访问权限

一 提供好的~Action与Controller加访问权限

直接将特性加到controller或者action上,即可,

1          [RoleFilter(RoleFlag.WorkShopUser)]2         public JsonResult TalkDetail(FormCollection form)3         {4         }

二 扩展MVC中的Html.Action,为分部视图作访问权限

对于,为Html.Action加权限其实就是把原来的方法进行重载几个,然后加入权限判断依据,就可以了,比较简单,但比较实用,在项目开发中

感觉不太灵活,但对于要为公用的分部视图而言,已经足够了。(应该分部视图A页面是一种访问权限,而在B页面是另一种访问权限,所以不能直接加到Action上幼)

1  ///  2         /// 带权限的分部视图 3         ///  4         ///  5         ///  6         ///  7         ///  8         ///  9         /// 
10 public static MvcHtmlString Action(this HtmlHelper htmlHelper, string actionName, string controllerName, object routeValues, RoleFlag roleFlag)11 {12 #region 权限判断,如果不符合,就返回null13 //权限验证代码片断...14 #endregion15 return ChildActionExtensions.Action(htmlHelper, actionName, controllerName, routeValues);16 }17 /// 18 /// 带权限的分部视图19 /// 20 /// 21 /// 22 /// 23 ///
24 public static MvcHtmlString Action(this HtmlHelper htmlHelper, string actionName, RoleFlag roleFlag)25 {26 return Action(htmlHelper, actionName, null, null, roleFlag);27 }28 /// 29 /// 带权限的分部视图30 /// 31 /// 32 /// 33 /// 34 /// 35 ///
36 public static MvcHtmlString Action(this HtmlHelper htmlHelper, string actionName, object routeValues, RoleFlag roleFlag)37 {38 return Action(htmlHelper, actionName, null, routeValues, roleFlag);39 }

三 扩展MVC的HtmlHelper,为页面某块HTML块(闭合的块)加访问权限

对于这种方式是我最喜欢的也是最亲爱的方式,因为它的灵活性确实很高,再配合Razor引擎,可以说在代码的艺术性上是一个升华,呵呵

看看他在页面上的体现吧:

1 @Html.ServerTime(UserRole.GetHashCode(),2 @
3
ok牛了
4
)

而它的核心代码为:

1        #region 页面代码块级权限设计 2         ///  3         /// 页面代码块级权限设计 4         ///  5         ///  6         /// 角色ID 7         ///  8         /// 
9 public static HelperResult RoleHtmlTags(this HtmlHelper htmlHelper, int role, Func
template)10 {11 if (role != 1)12 return null;13 return new HelperResult(writer =>14 {15 writer.Write(template.Invoke(null));16 });17 }18 #endregion

调用时的代码,注意我们使用它输入参数使用<div>或者<span>等标记括起来

@Html.RoleHtmlTags(1,@

我的Html代码

)

感谢您的阅读!

喜欢代码艺术性的跟我一起研究吧,呵呵 !

本文转自博客园张占岭(仓储大叔)的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
SSH连接时出现Host key verification failed的原因及解决方法
查看>>
jquery 操作checkbox只能使用一次
查看>>
java.util.concurrent包(3)——线程间通信wait/notify和await/signal
查看>>
1_Shell语言———shell语言简介
查看>>
flask从文本中提取出ip
查看>>
专业术语收集
查看>>
【转】这些年,我收集的JavaScript代码(二)
查看>>
python datetime简单使用
查看>>
Hello 大家好,欢迎来到我的新博客
查看>>
博客,我们是写给谁看的
查看>>
linux系统调优及安全设置
查看>>
MediaInfo源代码分析 4:Inform()函数
查看>>
Spread for Windows Forms高级主题(2)---理解单元格类型
查看>>
使用kickstart软件自动化安装CentOS 6.X操作系统
查看>>
2015新题型
查看>>
二进制与十进制整数,浮点数相互转换
查看>>
zabbix监控(二)添加新主机、自定义监控
查看>>
支付宝升级延时到账功能
查看>>
静默安装oracle
查看>>
Java SE 7新特性:创建泛型实例时自动类型推断
查看>>