ASP.NET WebApi总结之自定义权限验证
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ASP.NET WebApi总结之自定义权限验证,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4173字,纯文字阅读大概需要6分钟。
内容图文
在.NET中有两个AuthorizeAttribute
类,
一个定义在System.Web.Http
命名空间下
#region 程序集 System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 // E:\src\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll#endregionusing System.Web.Http.Controllers; using System.Web.Http.Filters; namespace System.Web.Http { //// 摘要: // 指定用于验证请求的 System.Security.Principal.IPrincipal 的授权筛选器。 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)] publicclass AuthorizeAttribute : AuthorizationFilterAttribute { //// 摘要: // 初始化 System.Web.Http.AuthorizeAttribute 类的新实例。public AuthorizeAttribute(); //// 摘要: // 获取或设置授权角色。 //// 返回结果: // 角色字符串。publicstring Roles { get; set; } //// 摘要: // 获取此特性的唯一标识符。 //// 返回结果: // 此特性的唯一标识符。publicoverrideobject TypeId { get; } //// 摘要: // 获取或设置授权用户。 //// 返回结果: // 用户字符串。publicstring Users { get; set; } //// 摘要: // 为操作授权时调用。 //// 参数: // actionContext: // 上下文。 //// 异常: // T:System.ArgumentNullException: // 上下文参数为 null。publicoverridevoid OnAuthorization(HttpActionContext actionContext); //// 摘要: // 处理授权失败的请求。 //// 参数: // actionContext: // 上下文。protectedvirtualvoid HandleUnauthorizedRequest(HttpActionContext actionContext); //// 摘要: // 指示指定的控件是否已获得授权。 //// 参数: // actionContext: // 上下文。 //// 返回结果: // 如果控件已获得授权,则为 true;否则为 false。protectedvirtualbool IsAuthorized(HttpActionContext actionContext); } }
另一个在System.Web.Mvc
命名空间下
#region 程序集 System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 // E:\src\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll#endregionnamespace System.Web.Mvc { //// 摘要: // 指定对控制器或操作方法的访问只限于满足授权要求的用户。 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)] publicclass AuthorizeAttribute : FilterAttribute, IAuthorizationFilter { //// 摘要: // 初始化 System.Web.Mvc.AuthorizeAttribute 类的新实例。public AuthorizeAttribute(); //// 摘要: // 获取或设置有权访问控制器或操作方法的用户角色。 //// 返回结果: // 有权访问控制器或操作方法的用户角色。publicstring Roles { get; set; } //// 摘要: // 获取此特性的唯一标识符。 //// 返回结果: // 此特性的唯一标识符。publicoverrideobject TypeId { get; } //// 摘要: // 获取或设置有权访问控制器或操作方法的用户。 //// 返回结果: // 有权访问控制器或操作方法的用户。publicstring Users { get; set; } //// 摘要: // 在过程请求授权时调用。 //// 参数: // filterContext: // 筛选器上下文,它封装有关使用 System.Web.Mvc.AuthorizeAttribute 的信息。 //// 异常: // T:System.ArgumentNullException: // filterContext 参数为 null。publicvirtualvoid OnAuthorization(AuthorizationContext filterContext); //// 摘要: // 重写时,提供一个入口点用于进行自定义授权检查。 //// 参数: // httpContext: // HTTP 上下文,它封装有关单个 HTTP 请求的所有 HTTP 特定的信息。 //// 返回结果: // 如果用户已经过授权,则为 true;否则为 false。 //// 异常: // T:System.ArgumentNullException: // httpContext 参数为 null。protectedvirtualbool AuthorizeCore(HttpContextBase httpContext); //// 摘要: // 处理未能授权的 HTTP 请求。 //// 参数: // filterContext: // 封装有关使用 System.Web.Mvc.AuthorizeAttribute 的信息。filterContext 对象包括控制器、HTTP 上下文、请求上下文、操作结果和路由数据。protectedvirtualvoid HandleUnauthorizedRequest(AuthorizationContext filterContext); //// 摘要: // 在缓存模块请求授权时调用。 //// 参数: // httpContext: // HTTP 上下文,它封装有关单个 HTTP 请求的所有 HTTP 特定的信息。 //// 返回结果: // 对验证状态的引用。 //// 异常: // T:System.ArgumentNullException: // httpContext 参数为 null。protectedvirtual HttpValidationStatus OnCacheAuthorization(HttpContextBase httpContext); } }
两者主要区别在于:
- System.Web.Http 这个主要是用在Web Api
- System.Web.Mvc 这个主要用在 ASP.NET MVC
- System.Web.Http 版本中,传入参数为HttpActionContext
publicoverridevoid OnAuthorization(HttpActionContext actionContext);
System.Web.Mvc版本中,传入参数为AuthorizationContext
publicvirtualvoid OnAuthorization(AuthorizationContext filterContext);
看似相同,但是在处理自定义权限的时候,两者思路相近实际实现方式上有很大的差别。
下面列出两种属性下获取Cookie的不同:
MVC:
public class Foo : AuthorizeAttribute { public override void OnAuthorization(AuthorizationContext filterContext) { HttpCookie cookie = filterContext.HttpContext.Request.Cookies.Get("Bar"); } }
HTTP(Web Api):
public class Foo : AuthorizeAttribute { public override void OnAuthorization(HttpActionContext actionContext) { var cookies = actionContext.Request.Headers.GetCookies("Bar").FirstOrDefault(); var cookie = cookies["Bar"]; } }
还有就是自定义权限处理的时候,写法也不尽相同,后续文章会进行介绍
原文:https://www.cnblogs.com/buyixiaohan/p/8278544.html
内容总结
以上是互联网集市为您收集整理的ASP.NET WebApi总结之自定义权限验证全部内容,希望文章能够帮你解决ASP.NET WebApi总结之自定义权限验证所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。