OverrideAuthenticationAttribute有什么用?我在当前的WebAPI项目中遇到了一个标有System.Web.Http.OverrideAuthenticationAttribute的控制器方法,我很好奇这是做什么用的?在Google和Stackoverflow中搜索并没有回答这个问题。MSDN文档不包含太多信息。它只是说明了以下内容:指示覆盖在更高级别定义的身份验证过滤器的过滤器属性。另外,我查看了来源:publicsealedclassOverrideAuthenticationAttribute:Attribute,IOverrideFilter,IFilter{publicboolAllowMultiple{get{returnfalse;}}publicTypeFiltersToOverride{get{returntypeof(IAuthenticationFilter);}}}但这不起作用带来太多灵感。那么有人可以解释一下使用OverrideAuthenticationAttribute的目的是什么吗?请提供一些用例以便更好地理解。OverrideAuthentication属性用于抑制全局身份验证过滤器,这意味着使用此过滤器时将禁用所有全局身份验证过滤器(实现IAuthenticationFilter)。假设您有一个名为BasicAuth的全局组件validationfilter:if(user==null||!user.Identity.IsAuthenticated){filterContext.Result=newHttpUnauthorizedResult();}}}并使用以下代码将过滤器配置为所有控制器的全局过滤器:filters.Add(newBasicAuthAttribute());}}假设您想对单个控制器或控制器操作使用不同的身份验证策略。在这种情况下,您可以全局禁用身份验证。使用OverrideAuthentication属性进行筛选,然后配置新筛选器以用于该特定操作。当您与外部登录提供程序集成并且您不希望任何现有的全局身份验证过滤器干扰您的外部登录身份验证时,这很有用。在下面的代码中,禁用全局身份验证过滤器,然后启用HostAuthentication过滤器以执行单个操作以启用外部登录提供程序(例如Facebook)://GETapi/Account/ExternalLogin[OverrideAuthentication][HostAuthentication(Startup.ExternalCookieAuthenticationType)][AllowAnonymous][HttpGet("ExternalLogin",RouteName="ExternalLogin")]publicasyncTaskExternalLogin(stringprovider){//Authcode}OverrideAuthentication用于覆盖在更高级别配置的身份验证过滤器。例如,假设您有一个像这样全局应用的身份验证过滤器。//在WebApiConfig中全局应用config.Filters.Add(newMyAuthenticationFilter());并且,您希望阻止此过滤器针对特定操作方法或控制器运行。您可以在该级别使用OverrideAuthentication,如下所示。publicclassValuesController:ApiController{[OverrideAuthentication]publicstringGet(){...}}现在,在上面的示例中,您应用了MyAuthenticationFilter。比如说,您想覆盖它并运行另一个过滤器,例如MyAnotherAuthenticationFilter仅用于Post操作方法。你可以这样做。publicclassValuesController:ApiController{//删除全局或在控制器级别应用的所有过滤器[OverrideAuthentication][MyAnotherAuthentication]//仅放回MyAnotherAuthenticationFilterpublicstringPost(...){...}}更多信息在这里。请参阅“过滤器覆盖”部分。以上就是C#学习教程:OverrideAuthenticationAttribute的作用是什么?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
