собратья 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, если уже есть один (первый) запрос, который не был полностью обработан.