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 框架调用。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。