2017-01-09 32 views
1

我稍微更改了Integrating Azure AD into an ASP.NET Core web app sample中的代码。我可以成功运行该应用程序,并且如果单击“登录”链接,则我会正确重定向到Azure AD登录页面。AutomaticChallenge不适用于ASP.NET MVC Core中的CookieAuthentication和Azure AD示例

但是,如果我尝试访问受Authorize属性保护的路由,我也希望应用程序自动将我重定向到登录页面。我已将[Authorize]属性添加到HomeControllerContact操作中,但如果我尝试在未登录的情况下访问此属性,我不会将其重定向到登录页面。如果我在登录时访问联系页面,则显示正确。

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

但即使有这些变化,我不重定向到登录页面:

如下我已经更新了Startup.cs文件。还有什么我失踪?

+0

我在我身边做一个测试,示例工作正常,如果我添加[Authorize]属性到控制器动作,然后调用这个动作没有登录,它会重定向到登录页面。您修改了示例代码,您是否可以将您的代码与您的代码分享给我们,以便重现问题? –

+0

您也没有提及在未登录时执行联系动作时实际发生的情况。您只是说您没有重定向到登录页面。请张贴你所有的mods以及你所看到的错误或行为。谢谢! –

+0

感谢您的帮助。我找到了答案并注意到了它。仅供参考,当我遇到问题时,它表现为页面空白,浏览器在地址栏中显示/ Home/Contact URL。此外,F12工具显示该页面正在获得401未经授权的响应代码。但是如下所述,这似乎是Microsoft.AspNetCore.Authentication.Cookies软件包1.1.0版本中的一个更改。 – 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 
相关问题