2016-12-22 8 views
0

У меня есть реализация в .net-core с использованием cookieauthentication.Авторизовать перенаправление 401 не работает

Однако, у меня возникает следующая проблема: При доступе к странице, когда я не зарегистрирован и где установлен параметр AuthorizationAttribute, она просто показывает мне пустую страницу, а не перенаправляет меня на страницу входа.

Fiddler сообщает мне, что я получаю несанкционированный ответ 401. Расположение заголовка устанавливается в/Home, но игнорируется браузером, так как код состояния 401.

реализация печенья выглядит следующим образом:

  app.UseCookieAuthentication(new CookieAuthenticationOptions() 
     { 
      AuthenticationScheme = CookieAuthenticationDefaults.AuthenticationScheme, 
      AutomaticAuthenticate = true, 
      AutomaticChallenge = true, 
      LoginPath = new PathString("/Home"), 
      LogoutPath = new PathString("/logout"), 
      AccessDeniedPath = new PathString("/accessdenied") 
     }); 

AuthorizationAttribute работает отлично, так как я могу получить доступ к страницы, как только я вошёл в систему.

С моей точки зрения, AutomaticChallenge = true должен позаботиться об этом. Это неправильно?

+0

Это довольно странно. Может быть что-то еще в вашем конвейере изменить 302 перенаправить код http-статуса на 401. –

ответ

1

У вас возникла проблема с параметром AutomaticChallenge. Этот параметр вызывает конфликт между промежуточным программным обеспечением IISIntegration и Cookie, см. Подробные примечания here.

Если вы используете [Авторизоваться], то решение было бы добавить следующий код на startup.cs внутри ConfigureServices(IServiceCollection services)

services.AddAuthorization(options => 
{ 
    options.DefaultPolicy = new AuthorizationPolicyBuilder("Cookies").RequireAuthenticatedUser().Build(); 
}); 

Я проверил его и он работает!

+0

Я добавил фрагмент кода, но для меня это не работает. Никакой разницы в том, что происходит. Обратите внимание, что я использую Kestrel. –

+1

Как насчет указания аутентификации в электронной книге [Авторизовать]? [Авторизовать (ActiveAuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme)] – Ross

+0

Бинго! Указание: [Авторизовать]: [Авторизовать (ActiveAuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme)] сделал трюк! огромное спасибо –