定義一個類:TestAuthorizeAttribute
public class TestAuthorizeAttribute : AuthorizeAttribute { public string roleName = ""; //權限進入 public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext) { base.OnAuthorization(actionContext); } //判斷權限 protected override bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext) { if (roleName == "管理員") return true; return false; } //權限為false執行內容 protected override void HandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext) { base.HandleUnauthorizedRequest(actionContext); } }
這里的AuthorizeAttribute引用的命名空間是System.Web.Http;而非是System.Web.Mvc的。
定義一個控制器:TestController
對整個控制器權限控制
//判斷權限為超級管理員的情況下進入此控制器
[TestAuthorize(roleName="超級管理員")]
public class TestController : ApiController
{ public string GetIndex() { return "123"; } }
對控制器中的某個Action權限控制

public class TestController : ApiController {
//判斷權限為超級管理員的情況下進入此Action [TestAuthorize(roleName = "超級管理員")] public string GetIndex() { return "123"; } }