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

为什么Asp.NetCoreAuthenticationScheme是Mandatory分享

时间:2023-04-10 10:49:12 C#

为什么Asp.NetCoreAuthenticationScheme是Mandatory很郁闷的是,在Asp.NetCore中,AuthenticationScheme似乎是强制的。我的目标是构建一个API,我不想了解有关客户端的任何信息。我已经建立了自定义身份验证和授权,效果很好。我没有使用身份或cookie。但是,如果没有有效的身份验证方案,我无法返回403Forbid结果,否则会出现以下异常...System.InvalidOperationException:没有配置身份验证处理程序来处理此方案:自动配置为不使用身份验证方案或创建不依赖于登录路径或其他任何内容的身份验证方案?在仔细阅读Asp.netCore安全源代码后,我设法创建了一个自定义身份验证处理程序。为此,您需要实现3个类。第一个类实现抽象的AuthenticationOptions。公共类AwesomeAuthenticationOptions:AuthenticationOptions{publicAwesomeAuthenticationOptions(){AuthenticationScheme="AwesomeAuthentication";自动身份验证=假;}}第二个类实现了一个抽象的AuthenticationHandler。公共类AwesomeAuthentication:AuthenticationHandler{protectedoverrideasyncTaskHandleAuthenticateAsync(){varprop=newAuthenticationProperties();varticket=newAuthenticationTicket(Context.User,prop,"AwesomeAuthentication");//这是你设置ClaimsPrinal的地方,如果auth失败,返回AuthenticateResult.Fail("reasonforfailure");返回awaitTask.Run(()=>AuthenticateResult.Success(ticket));}}第三个类实现了一个抽象的AuthenticationMiddleware。公共类AwesomeAuthenticationMiddleware:AuthenticationMiddleware{publicAwesomeAuthenticationMiddleware(RequestDelegatenext,IOptionsoptions,ILoggerFactoryloggerFactory,UrlEncoderurlEncoder):base(next,options,loggerFactory,urlEncoder){}protectedoverrideAuthenticationHandlerCreateHandler(){returnnewAwesomeAuthentication();}}最后,在Startup.csConfigure方法中使用中间件组件。app.UseMiddleware();现在您可以构建自己的身份验证方案。以上就是C#学习教程的全部内容:为什么Asp.Netcore认证方案是强制性的分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: