AuthorizeAttribute 是 ASP.NET MVC 的过滤器之一,又称为认证和授权过滤器,即判断登录与否授权与否。当为某个控制器或动作方法附加该特性时,没有登录或授权的账户是不能访问对应的控制器或动作方法的。

在进入一个附加Authorize特性的控制器或动作之前,首先执行的是 AuthorizeAttribute 类的 OnAuthorization(AuthorizationContext filterContext)方法,接着 OnAuthorization() 会去调用其他诸如 AuthorizeCore() 方法。

//特性,用于标记在授权期间要跳过System.Web.Mvc.AuthorizeAttribute的控制器和操作
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited=true, AllowMultiple=true)]
public class AuthorizeAttribute:FilterAttribute, IAuthorizationFilter
{public AuthorizeAttribute();public string Roles { get; set; }public override object TypeId{ get; }public string Users { get; set; }/*AuthorizeAttribute的OnAuthorization方法内部调用AuthorizeCore方法,实现验证和授权逻辑。*/protected virtual bool AuthorizeCore(HttpContextBase httpContext);/*若AuthorizeCore返回false才会执行HandleUnauthorizedRequest*/protected virtual void HandleUnauthorizedRequest(AuthorizationContext filterContext);public virtual void OnAuthorization(AuthorizationContext filterContext);protected virtual HttpValidationStatus OnCacheAuthorization(HttpContextBase httpContext);
}

AuthorizeAttributeOnAuthorization() 方法内部调用了 AuthorizeCore(), 这个方法是实现验证和授权逻辑的地方,若这个方法返回为 true 则表示授权成功。若返回为 false 则表示授权失败,会给上下文设置一个 HttpUnauthorizedResult,这个 ActionResult 执行的结果是向浏览器返回一个 404 状态码,通常是跳转到一个登陆页面,可以重写 AuthorizeAttributeHandlerUnauthorizedRequest 跳转到相应的页面。

在ASP.NET MVC中使用身份验证和权限控制,但部分页面是可以匿名访问的,使用AllowAnonymous属性可指定需要匿名访问的控制器,从而跳过身份验证。

Web应用程序要求在用户登录之后才授予其受限制内容的访问权限,某些应用中,即时登录用户,也会限制它们查看的内容或可以编辑的字段。要限制对ASP.NET MVC视图的访问,可限制对呈现视图的操作方法的访问。为此,MVC框架提供AuthorizeAttribute类。

ASP.NET MVC AuthorizeAttribute相关推荐

  1. ASP.NET MVC AuthorizeAttribute OnAuthorization 验证跳转

    重写 AuthorizeAttribute 的 OnAuthorization 方法: using System.Web.Mvc;namespace Demo.Web.Common {public c ...

  2. asp.net MVC之AuthorizeAttribute浅析

    AuthorizeAttribute是asp.net MVC的几大过滤器之一,俗称认证和授权过滤器,也就是判断登录与否,授权与否.当为某一个Controller或Action附加该特性时,没有登录或授 ...

  3. ASP.NET MVC自定义AuthorizeAttribute篇知识点讲解—登录限制

    阅读目录 1.前言 2.AuthorizeAttribute登录特性解释 3.代码示例 1.前言 a.微软对ASP.NET的开发从WebForm到MVC的转变,已经正式过去5,6个年头,现在WebFo ...

  4. asp.net mvc 实现自定义AuthorizeAttribute(权限验证)标签 无效的一种原因

    ApiController下的授权筛选attribute为System.Web.Http.AuthorizeAttribute 普通Controller用的是System.Web.Mvc.Author ...

  5. asp.net mvc 学习

    Routing讲解: http://www.cnblogs.com/wangiqngpei557/p/3379095.html Filter讲解: http://www.cnblogs.com/ymn ...

  6. 成员资格、授权 – ASP.NET MVC 4 系列

    ASP.NET MVC 不像 ASP.NET WEB FORMS 那样提供了很多自动保护机制来保护页面不受恶意用户的攻击,更明确的说,后者是致力于使应用程序免受攻击: 服务器组件对显示的值和特性进行 ...

  7. ASP.NET MVC动作过滤器

    ASP.NET MVC中包含以下4种不同类型的Action Filter: 类型 使用时机 接口 实现方法 授权过滤器(Authorization Filter) 在执行任何Filter或Action ...

  8. [Asp.net mvc]OutputCacheAttribute

    什么是Cache? 缓存在web应用中是一种以空间换去时间的技术,把频繁访问并且不经常变化的数据存储到内存中,以达到快速访问的目的.在web应用中是比较常见的优化方式. OutputCacheAttr ...

  9. ASP.NET MVC实践系列9-filter原理与实践

    filter实际上是一个特性(attribute),它提供了一种向controller 或 action中添加某些任务的方法,当controller 或 action被调用时,会触发filter中定义 ...

最新文章

  1. python数据分析工具包_脑成像数据分析:Python工具包
  2. CKEditor的安装与基本使用(JSP)
  3. 深度学习概述:从感知机到深度网络
  4. YL杯超级篮球赛(jzoj 1325)
  5. C++笔记----运算符重载
  6. ROS系统学习9---节点间的内存共享(中级篇)---图像收发
  7. IMX6之SPI接口驱动测试
  8. matlab提取汉字拼音,中文转拼音工具
  9. div 中img 居中
  10. VB.net小技巧——VB.net中的结构体和共用体
  11. Unity—火焰特效制作
  12. 华为的冬天 任正非
  13. 网络中数据如何保证数据的安全性?
  14. 你以为打上马赛克就安全了吗?用Python一键还原,了解一下?
  15. 遗传算法的理解及例子解释
  16. 随心测试_Python Se_005鼠标悬停操作
  17. 【笔记】 欧几里得(扩展欧几里得)
  18. PC机之间串口通信传输文件
  19. Portable Chrome 32/64
  20. Bootstrap导航条鼠标悬停下拉菜单

热门文章

  1. 让ChatGPT画一个小孩
  2. springcloud搭建elk日志管理
  3. win10如何共享计算机网络打印机,win10系统如何安装网络打印机?windows10安装网络打印机图文教程...
  4. 【论文翻译】VGG网络论文中英对照翻译--(very deep convolutional networks for large-scale image  recognition)
  5. Array.sort用法
  6. 生命游戏【C/C++】
  7. 乐视网做智能电视入口互联网
  8. 在线算命的艺术:测测变现形式探究
  9. 位图与矢量图区别及png8与png24区别
  10. 买车需要了解的知识(持续更新)