/// <summary> /// /// </summary> /// <param name="filterContext"></param> public override void OnAuthorization(AuthorizationContext filterContext) { // TODO 验证用户信息 string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName; string actionName = filterContext.ActionDescriptor.ActionName; // string roles = GetRoles.GetActionRoles(actionName, controllerName); //if (!string.IsNullOrWhiteSpace(roles)) //{ // this.Roles = roles.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); //} using (AMDbContext amctx = new AMDbContext()) { // 检索当前action可以访问的角色列表 WebAppFunction fun = amctx.WebAppFunctions.Where(q => q.Controller == controllerName && q.Action == actionName).FirstOrDefault(); if (fun != null) { // 所有拥有可使用权限的角色列表 List <WebAppFunctionRole> funRoles = fun.WebAppFunctionRoles.Where(q => q.Operate.Name == "enable").ToList(); this.Roles = new List <Role>(); foreach (WebAppFunctionRole funRole in funRoles) { this.Roles.Add(funRole.Role); } } } base.OnAuthorization(filterContext); }
/// <summary> /// /// </summary> /// <param name="filterContext"></param> public override void OnAuthorization(AuthorizationContext filterContext) { string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName; string actionName = filterContext.ActionDescriptor.ActionName; // string roles = GetRoles.GetActionRoles(actionName, controllerName); //if (!string.IsNullOrWhiteSpace(roles)) //{ // this.Roles = roles.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); //} using (AMDbContext amctx = new AMDbContext()) { // 检索当前action可以访问的角色列表 WebAppFunction fun = amctx.WebAppFunctions.Where(q => q.Controller == controllerName && q.Action == actionName).FirstOrDefault(); if (fun != null) { // 所有拥有可使用权限的角色列表 List <WebAppFunctionRole> funRoles = fun.WebAppFunctionRoles.Where(q => q.Operate.Name == "enable").ToList(); this.Roles = new List <Role>(); foreach (WebAppFunctionRole funRole in funRoles) { this.Roles.Add(funRole.Role); } } } base.OnAuthorization(filterContext); // 验证失败时返回到登陆界面 if (filterContext.Result is HttpUnauthorizedResult) { filterContext.Result = new RedirectToRouteResult( new System.Web.Routing.RouteValueDictionary { { "langCode", filterContext.RouteData.Values["langCode"] }, { "controller", "Account" }, { "action", "Index" }, { "ReturnUrl", filterContext.HttpContext.Request.RawUrl } }); } }