MVC中AuthorizeAttribute用法並實現授權管理


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

 

public class MemberCheckAttribute : 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.頁面程序,也就是控制器里的程序,如下

//MemberCheck是擴展特性,自定義特性名稱是根據上面的類MemberCheckAttribute名進行變化
//當訪問/user/index時,程序會先走自定義特性MemberCheck然后再走Index
[MemberCheck]
public class UserController : Controller
{
       public ActionResult Index()
        {
            return View();
        }
}

 


免責聲明!

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



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