Я пишу приложение, используя asp.net-mvc для развертывания на iis6. Я использую формы аутентификации. Обычно, когда пользователь пытается получить доступ к ресурсу без надлежащей авторизации, я хочу, чтобы он был перенаправлен на страницу входа. FormsAuth делает это для меня достаточно просто.
Проблема: теперь у меня есть доступ к действию через консольное приложение. Какой самый быстрый способ заставить это действие ответить с состоянием 401 вместо перенаправления запроса на страницу входа?
Я хочу, чтобы консольное приложение могло реагировать на этот код состояния 401, а не быть прозрачным. Я также хотел бы сохранить настройки по умолчанию, перенаправлять неавторизованные запросы на поведение страницы входа.
Примечание. В качестве теста я добавил это в свой global.asax, и он не пропустил аутентификацию форм:
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
HttpContext.Current.SkipAuthorization = true;
}
@ Дейл и Энди
Я использую AuthorizeAttributeFilter, предоставленный в предварительном просмотре MVC 4. Это возвращает HttpUnauthorizedResult. Этот результат правильно устанавливает statusCode на 401. Проблема, насколько я понимаю, заключается в том, что asp.net перехватывает ответ (так как он помечен как 401) и перенаправляет на страницу входа, а не просто пропускает ее. Я хочу обойти этот перехват для определенных URL.