博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MCV 添加filter操作
阅读量:4500 次
发布时间:2019-06-08

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

今天在项目中发现使用了Filter功能,当用户没有某个module中Action的权限时,会跳转到错误页面。自己是MVC的初学着,对Filter工作原理的理解一无所知,所以对这Filter方面的知识进行了调研。

首先介绍一下这个项目的背景,本项目是一个网络游戏数据库后台管理程序,用于某些数据的增删改查功能。 它包含几个模块比如:用户管理,日志管理,流量统计等。 不同的后台用户有不同的访问权限,例如:某类型的用户只能访问用户管理模块的查看功能,但没有权限去删除和添加用户。数据库设计如下:

在Modules表中每一行记录表示一个controller即一个模块,ModuleActons表中每一行记录表示一个Action即功能,这两个表通过外键关联。Managers表记录了后台用户信息,每个用户对应一个ManageRole,ManageRolePermissions表中一行记录表示某个ManageRole

可以访问的Module。
好的,需求的背景已经介绍完毕,接下来就到重点了Fitler模块。
Asp.net MVC所有的Filter都是继承FilterAttribute类,此特性的Usage是Class和Method,并实现相应的接口例如:IActionFitler,IAuthorizationFilter. 下面是具体的一个实例:

Code:

public class ActionLogFilterAttribute : ActionFilterAttribute     {
public override void OnActionExecuting(ActionExecutingContext filterContext) {
//your filter code... base.OnActionExecuting(filterContext); } }

那么如果我们定义好了一个Filter特性,我们应该如何应用呢?

前面提到过FilterAttribute的作用范围是Class和Methods,而且是能被继承的,所以我们可以将上面定义的ActionLogFilterAttribute用于

Controller和Action方法,例如:

Code:

[ActionLogFilter] public class StoreController : Controller     {
//..... }

此时,ActionLogFilter作用于Class。

当一个Request需要访问StoreController中的方法,程序就自动调用OnActionExecuting方法,从而实现过滤的作用.

转载于:https://www.cnblogs.com/Dely/archive/2011/10/21/2219759.html

你可能感兴趣的文章
COJ 2108 Day7-例1
查看>>
自定义 DateTime 格式字符串
查看>>
如何利用报表工具FineReport实现报表列的动态展示
查看>>
ASP.NET基础学习(暴力破解密码)
查看>>
实验11——指针的基础应用
查看>>
FastCGI模块(FastCGI)
查看>>
v-for遍历出的元素上添加click事件,获取对应元素上的属性id值
查看>>
配置打开IE浏览器
查看>>
SVN A C D M G U R I 的含义
查看>>
ZooKeeper--大数据系统的僚机
查看>>
css3新属性object-fit,对页面img处理
查看>>
设计模式--工厂模式Factory
查看>>
五年修炼SEO、一年五万,多嘛?(看时间如何管理?五点论……)
查看>>
Mesos源码分析(16): mesos-docker-executor的运行
查看>>
echarts柱状图点击阴影部分触发事件
查看>>
3771: Triple
查看>>
使用PyPDF2库对pdf文件进行指定页面删除操作
查看>>
Python:yield关键字
查看>>
EasyRTSPClient:基于live555封装的支持重连的RTSP客户端RTSPClient
查看>>
EasyDarwin云存储方案调研:海康萤石云采用的是MPEG-PS打包的方式进行的存储
查看>>