当前位置: 首页 > 编程语言 > C#

C#学习教程:.NetCore2.0中的Windows和匿名身份验证分享

时间:2023-04-11 01:00:09 C#

Windows和.NetCore2.0中的匿名身份验证我正在尝试在.NetCore2.0空Web应用程序中混合使用Windows和匿名身份验证。我想避免使用[Authorize]属性,因为我不想使用Mvc或控制器。我的设置如下:我创建了一个空的.NetCore2.0Web应用程序我去了项目属性->调试->检查“启用Windows身份验证”并禁用“启用匿名身份验证”。现在“windowsAuthentication”:true和“anonymousAuthentication”:false出现在我的“IIS”下的launchSettings.json中。在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.身份.姓名);看到在app.Run里面运行,然后……一切正常!但是......一旦我在launchSettings.json中将“anonymousAuthentication”设置为true,它就会停止工作,我无法弄清楚我可以做些什么来使Windows身份验证与它一起工作。Context.User.Identity.IsAuthenticated始终为false。如您所见,我的配置非常简单,我需要它保持这种状态。我想在某些动态路由上启用/禁用Windows身份验证,因此不能使用具有[Authorize]属性的控制器。我想要实现的是一个简单的应用程序,其中url“/authenticated”将使用context.User.Identity.Name的值进行回复,而url“/public”将使用类似“这是一个公共页面”的内容进行回复!”。类似于ASP.NETCore中特定路由上的NTLM身份验证,但没有[Authorize]属性和控制器。非常稀缺的资源......有人知道我可能缺少什么吗?谢谢!匿名第一。当你收到时对于对应用程序受限部分的匿名请求,您需要调用httpContext.ChallengeAsync()。这将导致客户端在下一个请求时发送凭据。这是一个测试,请执行此操作。在这个主题上浪费了一段时间之后,Tratcher的答案救了我。对于一个非常简单的场景(匿名控制器+windows身份验证仅限于其余部分),这里有一个快速启动(中间件):publicclassNtlmAndAnonymousSetupMiddlewarepublicNtlmAndAnonymousSetupMiddleware(RequestDelegatenext){this.next=next;}publicasyncTaskInvoke(HttpContextcontext){if(context.User.Identity.IsAuthenticated||context.Request.Path.ToString().StartsWith("/Anonymous")){awaitnext(context);返回;}awaitcontext.ChallengeAsync("Windows");我只是在Startup.Configure方法的开头插入了这个:以上就是C#学习教程:.NetCore2.0分享中的Windows和匿名身份验证的全部内容,如果对大家有用还需要进一步了解C#学习教程。希望大家多多关注——app.UseMiddleware();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: