什么OverrideAuthenticationAttribute是为什么?
我在当前的Web API项目中遇到了一个标有System.Web.Http.OverrideAuthenticationAttribute的控制器方法,我很好奇这是什么? 在Google和Stackoverflow中搜索并不回答这个问题. MSDN documentation不包含太多信息.它只说如下:
另外,我已经看过来源: public sealed class OverrideAuthenticationAttribute : Attribute,IOverrideFilter,IFilter { public bool AllowMultiple { get { return false; } } public Type FiltersToOverride { get { return typeof(IAuthenticationFilter); } } } 但这并没有太多光线. 任何人都可以解释使用OverrideAuthenticationAttribute的目的是什么?请给出一些用例来更好的理解. 解决方法OverrideAuthentication属性用于抑制全局认证过滤器,这意味着使用此过滤器时将禁用所有全局认证过滤器(实现IAuthenticationFilter).假设您有一个名为BasicAuth的全局身份验证过滤器: public class BasicAuthAttribute : ActionFilterAttribute,IAuthenticationFilter { public void OnAuthentication(AuthenticationContext filterContext) { } public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext) { var user = filterContext.HttpContext.User; if (user == null || !user.Identity.IsAuthenticated) { filterContext.Result = new HttpUnauthorizedResult(); } } } 并且使用此代码将过滤器配置为所有控制器的全局过滤器: public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); filters.Add(new BasicAuthAttribute()); } } 假设您想在单个控制器或控制器操作上使用其他身份验证策略.在这种情况下,您可以禁用全局身份验证.过滤器使用OverrideAuthentication属性,然后配置要用于该特定操作的新过滤器.当您与外部登录提供程序集成时,这是有帮助的,您不希望任何现有的全局身份验证过滤器弄乱您的外部登录身份验证. 在下面的代码中,禁用了全局身份验证筛选器,然后启用HostAuthentication筛选器以启用外部登录提供程序(例如Facebook)的单个操作: // GET api/Account/ExternalLogin [OverrideAuthentication] [HostAuthentication(Startup.ExternalCookieAuthenticationType)] [AllowAnonymous] [HttpGet("ExternalLogin",RouteName = "ExternalLogin")] public async Task<IHttpActionResult> ExternalLogin(string provider) { // Auth code } (编辑:鄂州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 奇怪的错误w / NinjectValidatorFactory更新
- ASP.NET通过自定义函数实现对字符串的大小写切换功能
- asp.net-web-api – WebAPI中的长时间运行任务
- asp.net-mvc – 已经使用相同的参数类型定义了一个名为“Cr
- ASP.NET网站攻击:如何回应?
- ASP.NET网站管理系统退出 清除浏览器缓存,Session的代码
- asp.net – 在为app_offline.htm提供特定URL时,将http状态5
- asp.net-mvc-3 – DropDownListFor Unobtrusive Validation
- 在ASP.NET核心中间件中设置响应状态
- 在asp.net中使用加密数据库联接字符串保证数据安全
- ASP.NET Web API返回可查询的DTO?
- asp.net-mvc – 使用IIS7.5将网站中的URL绑定到另
- asp.net-ajax – Ajax脚本管理器和母版页
- asp.net – 我如何使用AJAX来确定用户的会话是否
- asp.net-mvc-4 – 如何开发一个ASP.NET Web API接
- asp.net – HttpWebRequest正在为404抛出异常
- asp.net-mvc – MVC应用程序调试错误:viewstate
- 用C#实现pdf文件的完整性验证
- asp.net-web-api – Web API / MVC 6中的安全JSO
- asp.net-mvc – 为什么MVC4捆绑捆绑Knockout.js?