MVC4 基础篇 通过Controller,ActionFilterAttribute处理权限问题
我们知道Mvc提供我们想要的功能的扩展,我们简单说说通过扩展Controller,以及ActionFilterAttribute来实现我们想要达到的权限管理内容。
我们来看下面结构:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class BaseController : Controller { public string User{ set ; get ;} public string Limits { set ; get ;} /// <summary> /// /// </summary> /// <param name="filterContext"></param> protected override void OnActionExecuting(ActionExecutingContext filterContext) { ///实现我们提供的权限操作 filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary( new { Controller = "Index" , action = "Default" })); } } |
我们看到通过集成Controller我们可以在运行Controller之前来判断用户操作权限,那么我们可以试想此处的应用场景,如当我们的用户未认证,那么我们可以通过直接判断跳转到认证页面。如采用MVC提供Controller验证过滤。
下面我们在来看:ActionFilterAttribute
1 /// <summary> 2 /// 参数过滤器 3 /// </summary> 4 public class ParamFilter : ActionFilterAttribute 5 { 6 /// <summary> 7 /// 执行Action之前操作 8 /// </summary> 9 /// <param name="filterContext"></param> 10 public override void OnActionExecuting(ActionExecutingContext filterContext) 11 { 12 ///处理Action之前操作内容根据我们提供的规则来定义这部分内容 13 base.OnActionExecuting(filterContext); 14 } 15 16 /// <summary> 17 /// 执行Action之后操作 18 /// </summary> 19 /// <param name="filterContext"></param> 20 public override void OnActionExecuted(ActionExecutedContext filterContext) 21 { 22 base.OnActionExecuted(filterContext); 23 } 24 }
通过扩展我们可以通过自己的应用场景以及内容来完成我们所想要达到的目的。
名称 | 说明 | |
---|---|---|
![]() |
Equals | 基础结构。返回一个值,该值指示此实例是否与指定的对象相等。 (继承自 Attribute。) |
![]() |
Finalize | 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。) |
![]() |
GetHashCode | 返回此实例的哈希代码。 (继承自 Attribute。) |
![]() |
GetType | 获取当前实例的 Type。 (继承自 Object。) |
![]() |
IsDefaultAttribute | 当在派生类中重写时,指示此实例的值是否是派生类的默认值。 (继承自 Attribute。) |
![]() |
Match | 当在派生类中重写时,返回一个指示此实例是否等于指定对象的值。 (继承自 Attribute。) |
![]() |
MemberwiseClone | 创建当前 Object 的浅表副本。 (继承自 Object。) |
![]() |
OnActionExecuted | 在执行操作方法后由 MVC 框架调用。 |
![]() |
OnActionExecuting | 在执行操作方法之前由 MVC 框架调用。 |
![]() |
OnResultExecuted | 在执行操作结果后由 MVC 框架调用。 |
![]() |
OnResultExecuting | 在执行操作结果之前由 MVC 框架调用。 |
![]() |
ToString | 返回表示当前对象的字符串。 (继承自 Object。) |
通常,可通过创建从抽象 FilterAttribute 类继承的特性类,来创建操作筛选器。 某些内置操作筛选器(如 AuthorizeAttribute 和 HandleErrorAttribute)继承自 FilterAttribute 类。 从 FilterAttribute 派生出来的操作筛选器始终在操作方法运行之前调用。
诸如 OutputCacheAttribute 之类的其他操作筛选器将继承抽象 ActionFilterAttribute 类,这使操作筛选器可在操作方法运行之前或之后运行。
可以使用操作筛选器特性来标记任何操作方法或控制器。 如果特性标记控制器,则操作筛选器将应用于该控制器中的所有操作方法。
有关使用特性的更多信息,请参见利用特性扩展元数据。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?