定义一个类: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"; } }