標籤:options tomat option attribute sys ati contex nbsp mat
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()
MVC許可權驗證過濾器