我需要为资源创建权限并确定谁可以读取、写入或删除它们。这些权限可以在数据库表中,并且应该可以通过管理员进行配置。然后我想在一个集中的地方(例如过滤器属性)检查权限,如下所示:
//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
}
}
我需要为User --> Resource和Claim --> Resource定义权限。
一个挑战可能是在涉及非常详细的资源时如何定义权限。例如,我应该如何定义拒绝用户更改实体的特定字段但允许更改其他字段的权限。
我目前的需求是 ASP.NET Web Api,但我宁愿使用也可以在其他应用程序中使用的解决方案。如果这是一个重要因素,我也愿意使用基于声明的安全性。