Где именно существует проверка подлинности с помощью форм в конвейере Http? - PullRequest
2 голосов
/ 20 октября 2010

Где именно существует аутентификация с помощью форм в конвейере Http?

Ответы [ 2 ]

1 голос
/ 20 октября 2010

Это обрабатывается модулем HTTP, System.Web.Security.FormsAuthenticationModule.Если вы посмотрите на системный файл web.config, c:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config, вы увидите, где он упоминается в разделе <httpModules>.Специфичный для сайта файл web.config будет наследовать конфигурацию в этом файле.

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

0 голосов
/ 20 октября 2010

Думаю, я должен был подумать об этом первым, но до меня не дошло, пока я не увидел ответ от @Carl Raymond, что я могу просто взломать его в отражателе. Итак, чтобы ответить на мой собственный вопрос

public void Init(HttpApplication app)
{
    if (!_fAuthChecked)
    {
        _fAuthRequired = AuthenticationConfig.Mode == AuthenticationMode.Forms;
        _fAuthChecked = true;
    }
    if (_fAuthRequired)
    {
        FormsAuthentication.Initialize();
        app.AuthenticateRequest += new EventHandler(this.OnEnter);
        app.EndRequest += new EventHandler(this.OnLeave);
    }
}

OnEnter вызывает закрытый метод OnAuthenticate, который проходит в контексте приложения, и именно здесь он проверяет / записывает заявки Auth формы.

В OnExit он проверяет ответ для кода ошибки статуса Http 401 и, если он его находит, именно тогда он перенаправляет на URL-адрес входа.

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