Может ли атрибут авторизации полностью предотвратить выполнение действия?

У меня есть настраиваемый атрибут авторизации, который, похоже, работает на поверхности. Когда пользователь без необходимых разрешений запрашивает действие через браузер, ему показывается соответствующее сообщение.

Я начал применять этот атрибут к действиям 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)
9
задан Michael Shimmins 2 January 2011 в 05:01
поделиться