public void SecureUrls_ShouldReturn1_WhenThereIs1SecureUrlTypeInCollection() {
            // arrange
            var collection = new SecureUrlCollection();
            var ignoreUrlOne = new IgnoreUrl();
            var ignoreUrlTwo = new IgnoreUrl();
            var secureUrl = new SecureUrl();

            // act
            collection.Add(ignoreUrlOne);
            collection.Add(ignoreUrlTwo);
            collection.Add(secureUrl);

            //assert
            Assert.Equal(1, collection.SecureUrls.Count);
            Assert.Equal(3, collection.Count());
        }
예제 #2
0
        /// <summary>
        /// 在执行前
        /// </summary>
        private void _onBeforeExecution(ActionExecutingContext context)
        {
            Logger.Info("请求开始");
            foreach (string IgnoreUrl in _IgnoreUrls)
            {
                string UpperPath = context.HttpContext.Request.Path.Value.ToUpper();
                //如果是开放的接口,让其管道短路
                if (UpperPath == IgnoreUrl.ToUpper() || UpperPath == $"/{IgnoreUrl.ToUpper()}")
                {
                    return;
                }
            }
            try
            {
                Logger.Info("Header信息:验证登陆");
                IHeaderDictionary Headers    = context.HttpContext.Request.Headers;
                StringValues      EncryptStr = Headers["EncryptStr"];
                StringValues      UnionId    = Headers["UnionId"];

                if (string.IsNullOrWhiteSpace(EncryptStr) || string.IsNullOrWhiteSpace(UnionId))
                {
                    Logger.Info("未登录");
                    ResultData <string> notLoginData = new ResultData <string>()
                    {
                        Code = 300, Message = "请先登陆", Result = null
                    };
                    context.Result = new JsonResult(notLoginData);
                    return;
                }
                else
                {
                    Logger.Info("通过登陆验证,开始验证加密认证");
                    JsonData WeChatConfig = AppConfig.Configs["PrjectConfig"]["WeChat"];
                    string   EncryptSky   = WeChatConfig["EncryptStr"].ToString();

                    string MD5Encrypt;
                    using (MD5 md5Hash = MD5.Create())
                    {
                        MD5Encrypt = Md5Helper.GetMd5Hash(md5Hash, EncryptSky + UnionId);
                    }

                    if (MD5Encrypt != EncryptStr)
                    {
                        Logger.Info("认证失败");
                        ResultData <string> loginFailureData = new ResultData <string>()
                        {
                            Code = 300, Message = "认证失败", Result = null
                        };
                        context.Result = new JsonResult(loginFailureData);
                        return;
                    }
                    Logger.Info("加密认证通过");
                }
            }
            catch (Exception e)
            {
                Logger.Error("执行动作之前失败:", e);
                ResultData <string> errorResult = new ResultData <string>()
                {
                    Code = 400, Message = e.Message, Result = null
                };
                context.Result = new JsonResult(errorResult);
                return;
            }
        }