MVC5 Attribute(特性)
阿新 • • 發佈:2018-10-09
quest exe aps 訪問 lse put ont status attr
AuthorizeAttribute:一般用來判斷權限
ActionFilterAttribute:方法執行前後動作
OutputCacheAttribute:輸出緩存設置
註:我們創建名稱的時候請帶上 Attribute
AuthorizeAttribute:創建
namespace MyWebApi.Models { using System; using System.Web; using System.Web.Mvc; /// <summary> /// 檢查登陸已經權限問題 /// </summary>View Codepublic class MyAuthorizeAttribute : AuthorizeAttribute { public int status = 1;//1:登陸有權,2:沒有登入,3:登陸無權限 /// <summary> /// 權限檢查的入口 /// </summary> /// <param name="httpContext">http的基類</param> /// <returns></returns> protectedoverride bool AuthorizeCore(HttpContextBase httpContext) { //這裏寫邏輯 利用Cookies 判斷用戶是否登入已經登入是否有權限,然後來給 status 賦值 #region 我們也可以在使用的時候傳入指定的用戶以及角色來判斷 string[] users = Users.Split(‘,‘); string[] roles = Roles.Split(‘,‘); #endregion returnstatus ==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("");//跳轉頁面 } } }View Code
使用:
OutputCacheAttribute:輸出緩存不必我們去創建,System.Web.Mvc 命名空間中已存在,我們可以直接使用,在設置的時間內刷新頁面不會刷新內容
特性上設置參數:
web.config配置:
MVC5 Attribute(特性)