/// <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);
        }
Exemple #2
0
        /// <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 }
                });
            }
        }