MVC中ActionFilterAttribute用法并实现统一授权
MVC中ActionFilterAttribute经常用来处理权限或者统一操作时的问题。
先写一个简单的例子,如下:
比如现在有一个用户管理中心,而这个用户管理中心需要登录授权后才能进去操作或浏览信息,这个时候我们不可能每一个页面都写一遍权限的判断,
这个时候就需 要我们进行统一判断权限,那么怎么统一权限呢?如果你了解MVC那么下面的代码应该很容易看懂,否则还是先看一下MVC基础吧。
1.创建一个类(用来检查用户是否登录和用户权限)代码如下:
// 过滤器 public class MemberCheckAttribute : ActionFilterAttribute { //执行Action之前操作 public override void OnActionExecuting(ActionExecutingContext filterContext) { //判断是否登录或是否用权限,如果有那么就进行相应的操作,否则跳转到登录页或者授权页面 if (true) { //处理Action之前操作内容根据我们提供的规则来定义这部分内容 base.OnActionExecuting(filterContext); } else { //跳转到登录页面 filterContext.HttpContext.Response.Redirect("/login.html"); } }
2.页面程序,也就是控制器里的程序,如下
//MemberCheck是扩展特性,自定义特性名称是根据上面的类MemberCheckAttribute名进行变化 //当访问/user/index时,程序会先走自定义特性MemberCheck然后再走Index [MemberCheck] public class UserController : Controller { public ActionResult Index() { return View(); } }
解释:ActionFilterAttribute有一下经常用到的方法
OnActionExecuted 在执行操作方法后由 MVC 框架调用。
OnActionExecuting
在执行操作方法之前由 MVC 框架调用。
OnResultExecuted
在执行操作结果后由 MVC 框架调用。
OnResultExecuting
在执行操作结果之前由 MVC 框架调用。