IHttpModule обрабатывает слишком много запросов - PullRequest
0 голосов
/ 21 февраля 2019

собратья stackoverflow'rs.Я застрял в проблеме довольно долго, и я хотел бы вашей помощи.Я нуб в asp.net.У меня есть стороннее приложение asp.net (назовем это приложение A или appA для краткости), развернутое в моей рабочей среде и среде разработки (которую я не имею никакого контроля), и я хотел бы включить многофакторную аутентификацию для этого приложения,У меня есть специальное решение для многофакторной аутентификации, которое используется многими нашими собственными приложениями, а также другими клиентами.Я планирую реализовать многофакторную аутентификацию в appA через IHttpModule.

Это объявление моего класса

public abstract class ISHttpModule : IHttpModule

Я зарегистрировал свой обработчик событий следующим образом

public void Init(HttpApplication application)
{
    application.PostAuthorizeRequest += new EventHandler(this.Application_PostAuthorizeRequest);
}

AppA запрашивает много необходимых ресурсов (200+)для правильной работы приложения, и я хочу перехватить один запрос и перенаправить пользователя на мой веб-сайт, развернутый в том же IIS, чтобы запросить OTP (одноразовый пароль)

private void Application_PostAuthorizeRequest(object source, EventArgs args)
{
    HttpApplication httpApplication = (HttpApplication)source;
    HttpContext context = this.httpApplication.Context;
    string requestedResource = GetRequestedResourceRelativeToApplication(context).ToLower();
    if (!requestedResource.Equals("auth"))
    {
        if (!userNotAuthenticatedThroughCookies) {
        // Redirect user to my another page and make cookie (make user authenticated to true)
        callABCMethod();
        } else // do nothing    
    }
}

protected string GetRequestedResourceRelativeToApplication(HttpContext context)
{
    return context.Request.Path.Substring(context.Request.ApplicationPath.Length);
}

Проблема в том, что (очевидно, при отправке appAнесколько запросов) моя система получает несколько запросов одновременно (до тех пор, пока я не установлю cookie для аутентификации пользователя), который генерирует несколько OTP.Я хочу игнорировать все запросы, которые будут поступать в мой метод Application_PostAuthorizeRequest, если уже есть один (первый) запрос, который не был полностью обработан.

...