authorizeattribute(小白之AuthorizeAttribute权限控制)

发布时间:2025-12-10 19:23:20 浏览次数:2

小白之AuthorizeAttribute权限控制-authorizeattribute对应的数据库

小白之AuthorizeAttribute权限控制(一)关于权限控制的初步整理,持续更新

web网站一般都需要做访问权限控制,把项目中使用的方式记录一下,也是第一次使用,作为知识积累吧。

项目是基于.NET的EF+MVC 框架,权限控制在Filters中去处理,该文件夹与Controller同级。

大致的流程:
当web请求访问某个被Attribute标记的controller或action时,就会先进入Filters中权限处理层,根据是否处理结果决定是或否有权限访问。一般没有权限时,会重定向到提示没有权限的页面或者登录页面。

现在 先自定义一个FunctionAttribute,继承 Attribute, 用于贴上需要做授权控制的方法上

   public class FunctionAttribute:Attribute    {        public FunctionAttribute()        {        }        public FunctionAttribute(string name)        {            this.Name = name;        }        public string Module { get; set; }        public string Code { get; set; }        public string Name { get; set; }        public string Message { get; set; }    }

是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!

为防止网络爬虫,请关注公众号回复”口令”

激活idea 激活CLion DataGrip DataSpell dotCover dotMemory dotTrace GoLand PhpStorm PyCharm ReSharper ReShaC++ Rider RubyMine WebStorm 全家桶 刷新

【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…

然后再定义一个 SystemAuthorizeAttribute,继承 AuthorizeAttribute,并重写里面需要用到的方法

  public class SystemAuthorizeAttribute : AuthorizeAttribute    {        public override void OnAuthorization(AuthorizationContext filterContext)        {           {                if (!filterContext.HttpContext.User.Identity.IsAuthenticated)                {                    var loginUrl = "/Portal/account/login";                    filterContext.Result = new RedirectResult(loginUrl);                }            }        }        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)        {            base.HandleUnauthorizedRequest(filterContext);        }        protected override bool AuthorizeCore(HttpContextBase httpContext)        {            return base.AuthorizeCore(httpContext);        }    }

权限控制的逻辑代码在OnAuthorization 方法中处理,如果验证不通过,则重定向到指定的页面。

ok,还差最后一步,我们把特性贴在需要用的地方:

     [Function(Module = "客户")]        [SystemAuthorize]        public ActionResult Index()        {            return View();        }

在方法上面加的[SystemAuthorize],当被访问时,会先进入SystemAuthorizeAttributeOnAuthorization方法,该方法没有方法值,如果不被重定向到其他页面,也就意味着没有被拦截,就会继续访问Index 方法,然后客户端就看到Home页面啦。

涉及到的知识点还有更多,后面再陆续更新关于权限控制的内容

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477