У меня есть настраиваемый атрибут авторизации, который, похоже, работает на поверхности. Когда пользователь без необходимых разрешений запрашивает действие через браузер, ему показывается соответствующее сообщение.
Я начал применять этот атрибут к действиям HttpPost
, которые выполняют такие действия, как удаление. Несмотря на то, что ответ правильный, тело действия все еще выполняется (в этом случае элемент удаляется).
Что я хочу сделать, так это полностью запретить методу действия что-либо делать в случае сбоя атрибута авторизации. Это то, для чего нужны AuthorizationAttributes, или мне стоит поискать другой способ?
Обновление:
public override void OnAuthorization(AuthorizationContext filterContext)
{
Check.Require(filterContext != null);
if (service.HasPermission(requiredPermission))
return;
filterContext.HttpContext.Response.StatusCode = 404;
filterContext.HttpContext.Response.StatusDescription = "File not found";
}
Действие контроллера оформляется следующим образом:
[HttpPost, RequiresPermission(Permissions.CanDeleteContentItem)]
public JsonResult Delete(Guid id)