Есть ли способ использовать механизм FormsAuthentication для добавления пользовательских заголовков в ответы? - PullRequest
1 голос
/ 20 июля 2011

У меня есть веб-приложение, использующее проверку подлинности с помощью форм.

Сценарий выглядит следующим образом:

  1. пользовательских запросов /Default.aspx
  2. Сервер отвечает 302 Найдено, Объект перемещен в /login.aspx?ReturnUrl=Default.aspx

Есть ли способ подключиться к этому ответу 302 и добавить к нему дополнительные заголовки ответа?

Я особенно заинтересован в добавлении Expires: заголовок.

Ответы [ 2 ]

0 голосов
/ 20 июля 2011

Решение состоит в том, чтобы создать HttpModule и подписаться на событие EndRequest.

Он будет вызван после того, как модуль FormsAuthentication попытается авторизовать запрос и решит вернуть перенаправление на результат страницы входа.

Что-то вроде:

public class ExpireRedirectsHttpModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.EndRequest += OneEndRequest;
    }

    private void OneEndRequest(object sender, EventArgs e)
    {
        var httpApplication = (HttpApplication)sender;
        HttpContext ctx = httpApplication.Context;

        if (ctx == null) return;

        if (ctx.Response.StatusCode == (int)HttpStatusCode.Redirect)
        {
            ctx.Response.Cache.SetExpires(DateTime.UtcNow);
        }
    }

    public void Dispose()
    {
    }
}
0 голосов
/ 20 июля 2011

Одним из способов может быть написание собственного модуля проверки подлинности с помощью форм, но это может быть слишком большой работой.

Еще одним решением (быстрого взлома) может быть использование global.asax (или пользовательского модуля HTTP) для просмотра ответа - вы можете использовать такие события, как PreSendRequestContent , чтобы проверить, равен ли текущий ответ 302 и перенаправляет на login.aspx и добавляет ваш заголовок в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...