2017-01-09 8 views
1

Я слегка изменяю код с Integrating Azure AD into an ASP.NET Core web app sample. Я могу запустить приложение успешно, и если я нажму ссылку «Войти», я правильно перенаправляюсь на страницу входа в Azure AD.AutomaticChallenge не работает для CookieAuthentication в ASP.NET MVC Core с примером Azure AD

Однако я также хотел бы, чтобы приложение автоматически перенаправляло меня на страницу входа в систему, если я пытаюсь получить доступ к маршруту, который защищен атрибутом Authorize. Я добавил атрибут [Authorize] к действию Contact, но если я попытаюсь получить к нему доступ без входа в систему, я не перенаправляюсь на страницу входа. Если я заходил на страницу контакта во время входа в систему, она отображается правильно.

Я обновил файл Startup.cs следующим образом:

app.UseCookieAuthentication(new CookieAuthenticationOptions() 
{ 
    AutomaticAuthenticate = true, 
    AutomaticChallenge = true, 
    LoginPath = "/Account/Login" 
}); 

Но даже с этими изменениями, я не попадаю на страницу входа в систему. Есть что-то еще, что мне не хватает?

+0

Я выполняю проверку на моей стороне, образец работает нормально, если я добавлю атрибут [Авторизовать] к действию контроллера, а затем вызовите этот actio n без входа в систему, он будет перенаправлен на страницу входа. Вы изменили образец кода, можете ли вы поделиться с нами своим кодом с обновлением, чтобы воспроизвести проблему? –

+0

Вы также не упоминаете, что на самом деле происходит, когда вы выполняете действие контакта, когда вы не вошли в систему. Вы просто говорите, что вы не перенаправляетесь на страницу входа. Пожалуйста, разместите все свои моды, а также какие ошибки или поведение вы видите. Благодаря! –

+0

Спасибо за помощь. Я нашел ответ и отметил его. Просто FYI, когда у меня возникла проблема, он проявил себя как пустая страница с браузером, показывающим URL/Home/Contact в адресной строке. Также инструменты F12 показали, что страница получает код несанкционированного ответа 401. Но, как отмечено ниже, это похоже на изменение версии 1.1.0 пакета Microsoft.AspNetCore.Authentication.Cookies. – John

ответ

1

Я обнаружил проблему. Образец ссылается на версию 1.0.0 для Microsoft.AspNetCore.Authentication.Cookies. Я обновил пакет до версии 1.1.0 и hit the issue described here. В частности, в версии 1.1.0 этого пакета поведение AutomaticChallenge изменилось при использовании нескольких поставщиков проверки подлинности (что и делает образец).

Я был в состоянии работать вокруг изменения путем обновления Настройка метода образца Startup.cs файла следующим образом:

Измените строку, которая вызывает app.UseCookieAuthentication к

app.UseCookieAuthentication(new CookieAuthenticationOptions() 
{ 
    AutomaticChallenge = true 
}); 

И в вызове app.UseOpenIdConnectAuthentication, добавьте эту строку:

AutomaticChallenge = false 

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

  • Нет связанных вопросов^_^