моя ситуация такова: Я работаю с mvc5 и webapi2 внутри того же проекта. Я начал работать с mvc, и поскольку мне нужны функции аутентификации и авторизации, я решил использовать личность. Затем из-за меняющихся требований мне нужно было внедрить веб-службу, поэтому я решил использовать webapi2, но ее также нужно было пройти аутентификацию, поэтому я выбрал базовую авторизацию в качестве своего метода проверки подлинности. Для этого я использовал собственный фильтр проверки подлинности. Everytime что-то пойдет не так («нет полномочий», «неправильные учетных данных») этот фильтр возвращает unauthorizedResult результата через свойство контекста результата:Как отличить ответ mvc 5 от ответа веб-api 2?
context.Result = new UnauthorizedResult(new AuthenticationHeaderValue[] { new AuthenticationHeaderValue("Basic") }, context.Request);
Это на самом деле отправить код статуса 401 через ответ (я проверил его с помощью отладчик). Проблема в том, что в моем клиенте я получаю код состояния 200. я понял, что это потому, что я получаю страницу входа в систему, как результат, и все из-за этого блока кода, который я установил, когда я начал настроил мой MVC приложение:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Cuenta/Login"),
});
как-то, в каком-то контексте конвейер, мой несанкционированный ответ webapi улавливается и рассматривается как ответ, который исходит от контроллера mvc. Так, пожалуйста, как я избегаю этого? Мне нужно получить код состояния 401, когда мой веб-сервис попытается получить защищенный ресурс, но мне по-прежнему нужна функция «вернуться в логин, если она была обеспечена» для моих защищенных ресурсов в части mvc моего приложения.
Извините, что я новичок в этом, а также извините за мое письмо. Спасибо.
Спасибо. Я собираюсь проверить эту альтернативу, кажется более подходящей, что временное решение, которое я использую прямо сейчас. что я сделал, это запустить мою службу webapi с помощью 'app.useWebApi (config)' в моем классе запуска owin перед установкой блока 'app.userCookieAuthentication ... '. – JorgeEspinoza