Asp.net mvc基于角色和基于规则的操作

时间:2015-01-14 14:36:23

标签: asp.net asp.net-mvc security authorization

我对我的应用程序中的角色和规则感到有点困惑。我的一些用户将在我的网站上授权编辑数据。例如,我将创建这样的角色:

  • EDITOR
  • ADMIN
  • VIEWER

Asp.net mvc有一个名为Authorize的属性。我可以为控制器操作指定角色。

    [Authorize]
    public class GeometryController : Controller
    {
        [Authorize(Roles = "VIEWER")]
        public ActionResult Get(string id)
        {
            return Content("OK.");
        }

        [HttpGet]
        [Authorize(Roles = "ADMIN, EDITOR")]
        public ActionResult Edit(string id)
        {           
           return Content("This operation is restricted for you.");   
        }
    }

但我有另一个角色,一些用户可以按工作区编辑数据。例如

  • user1 只能编辑Arizona数据并查看所有区域数据。
  • user2 可以编辑和删除德克萨斯州的数据。

1 个答案:

答案 0 :(得分:1)

我在代码中做了一些接近以下的事情。

public class CustomAuthorizeAttribute : AuthorizeAttribute
    {
        private readonly string _feature;
        private readonly string _permission;

        public BRTAuthorizeAttribute( string feature, string permission)
        {
            _feature = feature;
            _permission = permission;
        }

        protected override bool IsAuthorized(HttpActionContext actionContext)
        {
            if (!base.IsAuthorized(actionContext))
            {
                return false;
            }

            if(// check access rights)
            {
                return true
            }
            return false;
        }
    }

然后用[CustomAuthorize("feature", "permission")]装饰控制器,这应该是你需要的。