Как контролировать размер и пропорцию области посева с помощью ngx-img-cropper

Мне пришлось это сделать, но ни одно из решений, которые я нашел, не удовлетворило моими крайними требованиями JavaScript-анализа ошибок, которые я должен был избежать, чтобы перенаправить клиента на страницу входа.

Что я сделал должен был отправить простой ответ «NOAUTH» из моего пользовательского атрибута авторизации, затем перехватить ответ Ajax до того, как будут обработаны все обработчики событий, и перенаправить пользователя, установив window.location.

Серверная сторона:

protected override void HandleUnauthorizedRequest(AuthorizationContext context)
{
    if (context.RequestContext.HttpContext.Request.IsAjaxRequest())
    {
        var result = new ContentResult {Content = "NOAUTH"};
        context.Result = result;
        return;
    }
}

Тогда на стороне клиента:

$.ajaxSetup({
    dataFilter: function (data, type) {
        if (data !== "" && data === "NOAUTH") {
            window.location = '/';
        }
        return data;
    }
});

Я бы не рекомендовал этот подход. Если вам нужно это сделать, я бы, по крайней мере, предложил вместо этого добавить значение «NOAUTH» в заголовок ответа HTTP, а затем прочитать значение в глобальном обработчике JQuery.

Серверная сторона:

HttpContext.Current.Response.AddHeader("NOAUTH", "1");

Клиентская сторона:

$.ajaxSetup({
    complete: function (jqXHR, textStatus) {
        if (jqXHR.getResponseHeader("NOAUTH") === '1')
            window.location = '/';
    }
});

Обратите внимание, что использование dataFilter - единственный способ перехватить запросы ajax до того, как будут удалены любые другие обработчики событий.

0
задан Thierry Templier 13 July 2018 в 15:04
поделиться