我想在對.NET核心2.0空的Web應用程序混合的Windows和匿名認證。我想避免[Authorize]屬性,因爲我不想使用Mvc或控制器。Windows和匿名身份驗證在.net中核2.0
我的設置如下:
我創建了一個空的.Net核2.0的Web應用程序
我去項目屬性 - 選中> 「啓用Windows身份驗證」 和殘疾人 - >調試「啓用匿名身份驗證」。 現在「windowsAuthentication」:true和「anonymousAuthentication」:false出現在我的launchSettings.json下的「IIS」。
裏面Startup.cs,在ConfigureServices我加
services.AddAuthentication(Microsoft.AspNetCore.Server.IISIntegration.IISDefaults.AuthenticationScheme);
在https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/identity-2x#windows-authentication-httpsys--iisintegration提到我添加了一個簡單
Console.WriteLine(context.User.Identity.Name);
地看到,它的作品裏面app.Run和...... 它所有的作品!
但是......只要我設置「anonymousAuthentication」爲true launchSettings.json它停止工作,我想不出我能做些什麼來讓Windows身份驗證一起工作,用它。 Context.User.Identity.IsAuthenticated
總是假的。 正如你所看到的,我的配置非常簡單,我需要它保持這種方式。我想在某些動態路由上啓用/禁用Windows身份驗證,因此使用具有[授權]屬性的控制器不是一個選項。
我想要實現的是一個簡單的應用程序,其中URL「/ authenticated」將回復context.User.Identity.Name
的值,url「/ public」會回覆類似說的內容:「這是一個公共頁面! 。 與NTLM authentication on specific route in ASP.NET Core類似,但沒有[Authorize]屬性和控制器。 資源非常稀缺......任何人都知道我可能錯過了什麼? 謝謝!
非常感謝! 'context.ChallengeAsync(「Windows」)'搞定了!我發誓我試圖等待'context.ChallengeAsync()',但我使用「NTLM」作爲模式參數,它告訴我身份驗證模式不存在......不知道要傳遞什麼值... –