1. 程式人生 > >MVC5 Attribute(特性)

MVC5 Attribute(特性)

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

技術分享圖片

技術分享圖片

MVC5 Attribute(特性)