zoukankan      html  css  js  c++  java
  • 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 框架调用。

  • 相关阅读:
    java里的分支语句--程序运行流程的分类(顺序结构,分支结构,循环结构)
    Java里的构造函数(构造方法)
    Java里this的作用和用法
    JAVA中的重载和重写
    从键盘接收字符类型的数据并实现剪刀石头布的规则
    使用Notepad++编码编译时报错(已解决?)
    云就是网络,云计算呢
    使用JavaMail创建邮件和发送邮件
    mysql锁机制
    java中几种常用的设计模式
  • 原文地址:https://www.cnblogs.com/dangzhenjiuhao/p/4495750.html
Copyright © 2011-2022 走看看