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配置:

 

原文地址:https://www.cnblogs.com/Sea1ee/p/9759487.html