2

У меня есть сайт с использованием простой проверки подлинности форм, проверки учетных данных с помощью базы данных. Он работает нормально, как есть. В моих <system.web> в web.config у меня есть:Аутентификация на веб-сайте MVC и WebAPI

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="2880" /> 
</authentication> 

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

Моя проблема различает аутентификацию MVC и WebApi. Прежде всего, является ли мое решение хорошей идеей и легко реализуемо? В настоящее время в моей WebApiConfig.cs у меня есть:

GlobalConfiguration.Configuration.MessageHandlers.Add(new BasicAuthenticationHandler(new AuthenticationService())); 

и BasicAuthenticationHandler ищет учетные данные в заголовке. Однако при проверке подлинности форм MVC я не могу вообще достичь этой области. Когда я ударил действие в скрипаче, я вижу, что он перенаправляет меня прямо на страницу MVC Account/Login. Как избежать перенаправления для моих вызовов WebAPI?

Благодарим за любые рекомендации.

ответ

1

Ну, похоже, это было простое исправление. Прямая линия после web.config кода Я выше выглядел как:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="2880" /> 
    </authentication> 
    <authorization> 
    <deny users="?" /> 
    </authorization> 

и это выглядит как authorization элемент был полностью перезаписать [AllowAnonymous] я имел - единственно возможный метод для достижения анонимности был на страницу входа , Удаление этих трех строк полностью устранило мою проблему - теперь я использую атрибут [AllowAnonymous] для моей страницы WebAPI и правильно применяет базовую аутентификацию.

Смежные вопросы