2017-01-09 34 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 
相關問題