什么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 – ASP.NET MVC视图模型的最佳做法
- asp.net – 如何使用Fiddler编辑HTTP请求
- asp.net-mvc-4 – 表单身份验证:角色(MVC 4)C#
- asp.net-mvc – 如何在ASP.NET MVC4中使用具有唯一标识符UR
- 在ASP.net中使用NVP API时,PayPal SetExpressCheckout存在问
- asp.net – MVC4 – ContextDependentView – 这是什么意思
- asp.net – 我应该使用WebMatrix构建一个真实世界的网站吗?
- asp.net 将一个图片以二进制值的形式存入Xml文件中的实例代
- asp-classic – 经典的asp / asp.net网站 – global.asa无效
- asp.net-mvc – 如何从mvc中的控制器中设置隐藏字段的值
- ASP.NET 2.0和4.0似乎在Forms身份验证中以不同方
- 详解ASP.NET Core 中的框架级依赖注入
- asp.net-mvc – 是否有一个ASP MVC与JSTL标签等效
- asp.net-mvc – 如何锁定ASP.NET MVC中的路径?
- ASP.NET MVC编辑器模板和Html.EditorFor(…) –
- 如何在ASP.NET 5中添加一个TypeScript绝对类型的
- asp.net-mvc-3 – 具有最佳实践的示例N层ASP.NET
- asp.net-mvc – MVC3验证与实体框架模型/数据库首
- ASP.NET中TextBox使用Ajax控件显示日期不全的问题
- asp.net-mvc – Url.Action生成查询字符串,以任何
