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()); }
/// <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; } }