コード例 #1
0
        protected override bool HasExecutePermission(ActionExecutingContext filterContext, List <string> permissionCodes)
        {
            var userinfo = AuthenticationExtension.Current();

            if (userinfo.IsAdmin)
            {
                return(true);
            }
            else
            {
                List <string> usePermits = null;
                string        userId     = userinfo.UserId.ToString();
                string        cacheKey   = USER_PERMITSAj_CACHE_KEY + userId;
                usePermits = this._cache.Get <List <string> >(cacheKey);
                if (usePermits == null)
                {
                    ISystemPermissionRepository systemPermission = new SystemPermissionRepository();
                    usePermits = systemPermission.GetHavePermisionStrByUserId(userId).Result.ToList();
                    _cache.Set(cacheKey, usePermits, TimeSpan.FromMinutes(15));//缓存15分钟,15分钟后重新加载
                }
                foreach (var permit in permissionCodes)
                {
                    if (!usePermits.Any(a => a == permit))
                    {
                        return(false);
                    }
                }
                return(true);
            }
        }
コード例 #2
0
        protected override bool HasExecutePermission(ActionExecutingContext filterContext, string Area, string Controller, string Action)
        {
            var userinfo = AuthenticationExtension.Current();

            if (userinfo.IsAdmin)
            {
                return(true);
            }
            else
            {
                List <HavePermisionOutput>  usePermits       = null;
                ISystemPermissionRepository systemPermission = new SystemPermissionRepository();
                string cacheKey = USER_PERMITS_CACHE_KEY + userinfo.UserId.ToString();
                usePermits = this._cache.Get <List <HavePermisionOutput> >(cacheKey);
                if (usePermits == null)
                {
                    usePermits = systemPermission.GetHavePermisionByUserId(userinfo.UserId.ToString()).Result.ToList();
                }
                _cache.Set(cacheKey, usePermits, TimeSpan.FromMinutes(10)); //缓存10分钟,10分钟后重新加载
                if (!usePermits.Any(a => Area.Equals(a.Area, StringComparison.OrdinalIgnoreCase) && Controller.Equals(a.Controller, StringComparison.OrdinalIgnoreCase) && Action.Equals(a.Action, StringComparison.OrdinalIgnoreCase)))
                {
                    return(false);
                }
            }
            return(true);
        }