вы можете создать новый класс:
public class CheckPermission : ActionFilterAttribute {
public string ArgName { get; }
public CheckPermission(string argName)
{
this.ArgName = argName;
}
public override void OnActionExecuting(ActionExecutingContext context) {
var controller = context.Controller as Controller;
var identity = (ClaimsIdentity)controller.User.Identity;
var au = context.ActionArguments[ArgName] as AppUser;
var auclaims = new ApplicationUser(identity);
if (!auclaims.CanModifyUser(au))
context.Result = controller.StatusCode(401, "You do not have permission to add a user to this company");
base.OnActionExecuting(context);
}
}
Затем наденьте этот атрибут на ваше действие:
[HttpGet]
[CheckPermission("au")]
public ActionResult<AppUser> UpdateUser([FromBody]AppUser au)
{
// focus on your business logic
}
вы можете повторно использовать этот атрибут для любого действия, чтобы проверить разрешение пользователя.
Это относится к концепции АОП.
См. https://msdn.microsoft.com/en-us/magazine/dn574804.aspx