MVC权限验证过滤器
Action属性,权限设定属性
[AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = false)] public class PurviewEnumAttribute : Attribute { public string PurviewString { get; set; } public PurviewEnumAttribute(string purview) { this.PurviewString = purview; } }
Action属性,权限验证属性
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public class SuperICAuthorizeAttribute : AuthorizeAttribute { public string[] ActionPowers { get; set; } public override void OnAuthorization(System.Web.Mvc.AuthorizationContext filterContext) { string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName; string actionName = filterContext.ActionDescriptor.ActionName; object[] attributes = filterContext.ActionDescriptor.GetCustomAttributes(typeof(PurviewEnumAttribute), true); if (attributes != null && attributes.Count() > 0) { string power = (attributes[0] as PurviewEnumAttribute).PurviewString; this.ActionPowers = power.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); } base.OnAuthorization(filterContext); } protected override bool AuthorizeCore(HttpContextBase httpContext) { if (httpContext == null) { return false; } if (ActionPowers == null) { return true; } if (ActionPowers.Length == 0) { return true; } // if (ActionPowers.Any(httpContext.User.IsInRole)) if (ActionPowers.Any((new string[]{"1","2","3","4"}).Contains)) { return true; } else { return false; } } }
使用:Index需要权限为2的才能够进入,SuperICAuthorize过滤器中验证是否具有2的权限
[PurviewEnum("2")] [SuperICAuthorize] public ActionResult Index()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通