ASP.NET MVC AuthorizeAttribute

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类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值