我需要为资源创建权限,并确定谁可以读取,写入或删除。这些权限可以在数据库表中,并且可以使用管理员进行配置。然后我想检查一个集中位置的权限(例如过滤器属性),如下所示:
//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.NET Web Api,但我更倾向于使用可以在其他应用程序中使用的解决方案。如果这是一个重要因素,我也愿意使用基于声明的安全性。