• MVC5 Attribute(特性)


    AuthorizeAttribute:一般用来判断权限

    ActionFilterAttribute:方法执行前后动作

    OutputCacheAttribute:输出缓存设置

    注:我们创建名称的时候请带上 Attribute

    AuthorizeAttribute:创建

    namespace MyWebApi.Models
    {
        using System;
        using System.Web;
        using System.Web.Mvc;
    
        /// <summary>
        /// 检查登陆已经权限问题
        /// </summary>
        public class MyAuthorizeAttribute : AuthorizeAttribute
        {
            public int status = 1;//1:登陆有权,2:没有登入,3:登陆无权限
            /// <summary>
            /// 权限检查的入口
            /// </summary>
            /// <param name="httpContext">http的基类</param>
            /// <returns></returns>
            protected override bool AuthorizeCore(HttpContextBase httpContext)
            {
                //这里写逻辑  利用Cookies 判断用户是否登入已经登入是否有权限,然后来给 status 赋值
                #region  我们也可以在使用的时候传入指定的用户以及角色来判断
                string[] users = Users.Split(',');
                string[] roles = Roles.Split(',');
                #endregion
                return status ==1;
            }
    
            /// <summary>
            /// 当检查入口返回false会进入到这里
            /// </summary>
            /// <param name="filterContext"></param>
            protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
            {
                if (filterContext == null)
                {
                    throw new ArgumentNullException("filterContext");
                }
                else
                {
                    if (status == 2) //没有登陆的页面
                    {
                        filterContext.Result = new RedirectResult(""); 
                    }
                    else if (status == 3) //没有权限访问的页面
                    {
                        filterContext.Result = new RedirectResult("");
                    }
                }
            }
        }
    }
    View Code

    使用:

    ActionFilterAttribute:创建

    namespace MyWebApi.Models
    {
        using System.Web.Mvc;
    
        /// <summary>
        /// 方法的过滤
        /// </summary>
        public class MyFilterAttribute:ActionFilterAttribute
        {
            /// <summary>
            /// 在方法执行之前
            /// </summary>
            /// <param name="filterContext"></param>
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                //逻辑操作
                filterContext.Result = new RedirectResult("");//跳转页面
            }
            /// <summary>
            /// 在方法之后返回之前
            /// </summary>
            /// <param name="filterContext"></param>
            public override void OnActionExecuted(ActionExecutedContext filterContext)
            {
                //逻辑操作
                filterContext.Result = new RedirectResult("");//跳转页面
            }
            /// <summary>
            /// 在返回之前
            /// </summary>
            /// <param name="filterContext"></param>
            public override void OnResultExecuting(ResultExecutingContext filterContext)
            {
                //逻辑操作
                filterContext.Result = new RedirectResult("");//跳转页面
            }
            /// <summary>
            /// 在返回之后
            /// </summary>
            /// <param name="filterContext"></param>
            public override void OnResultExecuted(ResultExecutedContext filterContext)
            {
                //逻辑操作
                filterContext.Result = new RedirectResult("");//跳转页面
            }
        }
    }
    View Code

    使用:

     OutputCacheAttribute:输出缓存不必我们去创建,System.Web.Mvc 命名空间中已存在,我们可以直接使用,在设置的时间内刷新页面不会刷新内容

    特性上设置参数:

     web.config配置:

     

  • 相关阅读:
    PostgreSQL学习手册(五) 函数和操作符
    数据表的左连接与右连接
    ESX虚拟机文件列表详解
    程序员生存定律-打造属于自己的稀缺性
    C语言字符串处理函数
    托福听力
    DNS map file in windows
    Ubuntu 下安装VNC server
    PostgreSQL 数据库错误状态编号解释[附带列表
    [留学新生须知]新生美国生活常用单词汇总
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/9759487.html
Copyright © 2020-2023  润新知