自定义Authorize

自定义Authorize自定义Authorize:用于判断网站的权限,查看当前用户有无权限访问。创建一个类继承于AuthorizeAttributepublicclassZDYAuthorizeAttribute:AuthorizeAttribute想要实现自定义Authorize,得重写一下虚方法:publicvirtualvoidOnAuthorization(Authorizati

自定义Authorize:

用于判断网站的权限,查看当前用户有无权限访问。

创建一个类继承于AuthorizeAttribute

public class ZDYAuthorizeAttribute : AuthorizeAttribute

想要实现自定义Authorize,得重写一下虚方法:

public virtual void OnAuthorization(AuthorizationContext filterContext);//在过程请求授权时调用。
protected virtual void HandleUnauthorizedRequest(AuthorizationContext filterContext);//<span style="font-family: Arial, Helvetica, sans-serif;">处理未能授权的 HTTP 请求。</span>
protected virtual bool AuthorizeCore(HttpContextBase httpContext);//<span style="font-family: Arial, Helvetica, sans-serif;">重写时,提供一个入口点用于进行自定义授权检查。</span>

重写方法OnAuthorization

 public override void OnAuthorization(AuthorizationContext filterContext)
        {
            if(filterContext == null)
            {
                throw new ArgumentNullException("filterContext");//处理filterContext出错
            }
            if(!AuthorizeCore(filterContext.HttpContext))//处理是否已经验证了,返回false:未验证  true:已验证
            {
                HandleUnauthorizedRequest(filterContext);//处理未授权的的Http对象,重写使它转向另外一个页面(比如登录界面)
            }
            else
            {
                filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);//清除缓存
            }
        }

重写方法HandleUnauthorizedRequest

 protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            if(filterContext == null)//处理错误
            {
                throw new ArgumentNullException("filterContext");
            }
            else
            {
                string path = filterContext.HttpContext.Request.Path;
                string strUrl = "/Account/Login?returnUrl={0}";//利用链接进入未授权的页面,使其跳转到登录页面
                filterContext.HttpContext.Response.Redirect(string.Format(strUrl,HttpUtility.UrlEncode(path)),true);
            }
        }

处理未能授权的http请求,在这里只是将其页面跳转到登录页面,还有其他的处理方法,视情况而定

重写方法AuthorizeCore

protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            if (httpContext == null)
                throw new ArgumentNullException("httpContext");//错误处理
            else
                return CLogin.isAuthenticated();//根据登录页面传回来的bool来确定是否授权
        }

该方法决定当前用户是否有权限

今天的文章自定义Authorize分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/7241.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注