コード例 #1
0
        /// <summary>
        /// 在调用操作方法之前发生。
        /// </summary>
        /// <param name="actionContext">操作上下文。</param>
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            // log the request message.
            actionContext.BuildRequestLog();

            var  attr        = actionContext.ActionDescriptor.GetCustomAttributes <AllowAnonymousAttribute>();
            bool isAnonymous = attr.Any(a => a is AllowAnonymousAttribute);

            if (isAnonymous)
            {
                base.OnActionExecuting(actionContext);
                return;
            }

            var accessContext = new AccessContext(actionContext);

            // 校验接口请求参数签名。
            if (AccessSignEnaled)
            {
                VerifyAccessSign(accessContext);
            }

            // 校验接口访问权限。
            if (AccessRightsEnabled)
            {
                VerifyAccessRights(accessContext);
            }

            // 判断接口访问频率是否超过配置值。
            if (AccessFrequencyEnaled)
            {
                VerifyAccessFrequency(accessContext);
            }

            base.OnActionExecuting(actionContext);
        }