SuppressDefaultHostAuthentication в WebApi.Owin также подавляет аутентификацию за пределами webapi.

У меня возникла проблема с решением, в котором я использовал части из шаблона SPA Visual Studio для наличия контроллера учетной записи в WebApi с аутентификацией Oauth.

  app.UseOAuthBearerTokens(OAuthOptions);

Потом я в owin webapi регистрацию делаю

config.SuppressDefaultHostAuthentication(); 

но это также подавляет аутентификацию файлов cookie по умолчанию за пределами среды webapi. Это намерение. Если да, то как я могу настроить WebApi для подавления аутентификации файлов cookie, но он все еще активен в среде для других запросов?


person Poul K. Sørensen    schedule 19.02.2014    source источник
comment
Это сообщение в блоге Брока Аллена подробно описывает, почему это происходит.   -  person Bart Verkoeijen    schedule 07.03.2017


Ответы (1)


Кажется, что это хорошая практика, особенно когда вы смешиваете приложение, размещенное на OWIN, и обычное приложение в одном и том же каталоге IIS, для настройки WebApi с app.Map.

    public void Configuration(IAppBuilder app)
    {
        var configuration = WebApiConfiguration.HttpConfiguration;
        app.Map("/api", inner =>
        {
            inner.UseWebApi(configuration);
        });
    }

Все мои контроллеры были настроены с маршрутом префикса «api», и я просто переместил его в функцию карты. Теперь webapi работает изолированно и работает с остальной частью моего приложения. Спасибо @PinpointTownes за то, что указали мне в этом направлении.

person Poul K. Sørensen    schedule 19.02.2014
comment
Обязательно установите nugget pkg Microsoft ASP.Net Web API 2.2 OWIN. Все было установлено, но... - person Papa Burgundy; 04.08.2014
comment
Идентификатор пакета: Microsoft.AspNet.WebApi.Owin - person slypete; 07.02.2015
comment
WebApiConfiguration нигде не найти. Я использую MVC 5 и у меня установлен Microsoft.AspNet.WebApi.Owin 5.2.3. - person SomethingOn; 16.11.2015
comment
Это не входит в рамки этого ответа - вы также можете сделать app.Map в MVC5, что является ответом. app.Map(/api, inner =› {inner.UseMvc()}); Но не делайте так, чтобы это также изменило ваши действия, если вы используете часть MVC. Создайте новый вопрос для вашей проблемы, если этого недостаточно для вашей проблемы. - person Poul K. Sørensen; 18.11.2015