zoukankan      html  css  js  c++  java
  • 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配置:

     

  • 相关阅读:
    “TensorFlow 开发者出道计划”全攻略,玩转社区看这里!
    魔改合成大西瓜
    自定义注解!绝对是程序员装逼的利器!!
    Python中的join()函数的用法
    Python中的split()函数的用法
    linux 完全卸载mysql数据库
    域名被盗后还能不能找回
    在选择域名后缀时应该考虑到的问题
    什么叫域名劫持 和域名解析有什么区别
    河北重大技术需求系统04
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/9759487.html
Copyright © 2011-2022 走看看