MVC中AuthorizeAttribute用法並實現權限控制


1.創建一個類(用來檢查用戶是否登錄和用戶權限)代碼如下:

    public class AuthorizeFilterAttribute: AuthorizeAttribute
    {

        //AuthorizeAttribute的OnAuthorization方法內部調用了AuthorizeCore方法,這個方法是實現驗證和授權邏輯的地方,如果這個方法返回true,表示授權成功,如果返回false, 表示授權失敗, 會給上下文設置一個HttpUnauthorizedResult,這個ActionResult執行的結果是向瀏覽器返回一個401狀態碼,但是返回狀態碼沒什么意思,通常是跳轉到一個登錄頁面,可以重寫AuthorizeAttribute的HandleUnauthorizedRequest跳轉到相應的頁面
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            base.AuthorizeCore(httpContext);
            if (true)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        //如果AuthorizeCore返回false才會執行HandleUnauthorizedRequest

        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            base.HandleUnauthorizedRequest(filterContext);
            if (filterContext == null)
            {
                throw new ArgumentNullException("filterContext");
            }
            else
            {
                filterContext.HttpContext.Response.Redirect("/login.html");
            }
        }
    }

2.頁面程序,也就是控制器里的程序,如下

//AuthorizeFilter是擴展特性,自定義特性名稱是根據上面的類MemberCheckAttribute名進行變化

//當訪問/user/index時,程序會先走自定義特性AuthorizeFilter然后再走Index

[AuthorizeFilter]
public class UserController : Controller
{

       public ActionResult Index()
        {
            return View();
        }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM