C# 实现动态权限控制库

C# 实现动态权限控制库,c#,permissions,asp.net-web-api,authorization,C#,Permissions,Asp.net Web Api,Authorization,我需要为资源创建权限,并确定谁可以读取、写入或删除这些资源。这些权限可以在数据库表中,并且应该由管理员配置。然后我想在一个集中的位置(例如过滤器属性)检查权限,如下所示: //Controller action method [HttpPut] [PermissionControlFilter] public ApiResultBase Update(PlanDTO model) { ... } // Filter att

我需要为资源创建权限,并确定谁可以读取、写入或删除这些资源。这些权限可以在数据库表中,并且应该由管理员配置。然后我想在一个集中的位置(例如过滤器属性)检查权限,如下所示:

    //Controller action method
    [HttpPut]
    [PermissionControlFilter]
    public ApiResultBase Update(PlanDTO model)
    {
        ...
    }

    // Filter attribute class
    public class PermissionControlFilterAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            var permissions = GetUserPermissions(User.Identity.Name);
            // check if the user has permission for the action and
            // can read, write or delete according to the model type
            // and rules defined for this model type
        }
    }
我需要为用户-->资源声明-->资源定义权限

一个挑战可能是当涉及到非常详细的资源时,如何定义权限。例如,我应该如何定义权限来拒绝用户更改实体的特定字段,但允许更改其他字段

我目前的需求是ASP.NETWebAPI,但我更愿意使用一种也可以用于其他应用程序的解决方案。如果这是一个重要因素,我也愿意使用基于声明的安全性