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