Проверка подлинности с помощью форм: отключить перенаправление на страницу входа - PullRequest
66 голосов
/ 15 мая 2010

У меня есть приложение, которое использует проверку подлинности с помощью форм ASP.NET.По большей части это работает отлично, но я пытаюсь добавить поддержку простого API через файл .ashx.Я хочу, чтобы в файле ashx была необязательная аутентификация (т. Е. Если вы не указали заголовок Authentication, он просто работает анонимно).Но, в зависимости от того, что вы делаете, я хочу требовать аутентификацию при определенных условиях.

Я подумал, что будет просто ответить на код состояния 401, если требуемая аутентификация не была предоставлена, но похоже, чтоМодуль проверки подлинности форм перехватывает это и отвечает перенаправлением на страницу входа.Я имею в виду, что если мой ProcessRequest метод выглядит следующим образом:

public void ProcessRequest(HttpContext context)
{
    Response.StatusCode = 401;
    Response.StatusDescription = "Authentication required";
}

Тогда вместо того, чтобы получить код ошибки 401 на клиенте, как я и ожидал, я на самом деле получение перенаправления 302. На страницу входа в систему.

Для обычного HTTP-трафика я вижу, как это было бы полезно, но для моей страницы API я хочу, чтобы 401 прошел без изменений, чтобы клиентский клиентвместо этого может ответить на него программно.

Есть ли способ сделать это?

Ответы [ 11 ]

0 голосов
/ 15 мая 2010

Загляните в свой файл Web.config в configuration\authentication. Если там есть подэлемент forms с атрибутом loginUrl, удалите его и повторите попытку.

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