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(""); ???????????????} ???????????} ???????} ???}}
使用:
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("");//跳转页面 ???????} ???}}
使用:
OutputCacheAttribute:输出缓存不必我们去创建,System.Web.Mvc 命名空间中已存在,我们可以直接使用,在设置的时间内刷新页面不会刷新内容
特性上设置参数:
web.config配置:
MVC5 Attribute(特性)
原文地址:https://www.cnblogs.com/Sea1ee/p/9759487.html