/// <summary> /// 复写父类的该方法。执行控制器中的方法之前先执行该方法。从而实现过滤的功能。 /// </summary> /// <param name="filterContext"></param> public override void OnActionExecuting(ActionExecutingContext filterContext) { //调用父类的该方法。 base.OnActionExecuting(filterContext); begintime = DateTime.Now; requestHeader = new ApiRequestHeader(); var headers = Request.Headers; //获取nginx代理配置的客户ip信息 ---nginx必须配置 proxy set header X-Real-IP $remote addr ipaddress = filterContext.HttpContext.Request.Headers["X-Real-IP"].FirstOrDefault(); if (ipaddress.IsNullOrEmpty()) { //获取IP地址 ipaddress = filterContext.HttpContext.Connection.RemoteIpAddress.ToString(); } //获取登录用户信息 loginUser = this.GetUserInfo(); //获取请求来源信息 userAppLyInfo = this.GetUserAppLyInfo(); }
/// <summary> /// 从请求头信息中获取不解密加密请求的消息信息 /// </summary> /// <param name="context"></param> /// <returns></returns> private ResponseModel GetNoEnRequestHeaderData(HttpContext context) { //请求头信息验证未通过 var resultobj = new ResponseModel(ResponseCode.BadRequest, "头信息验证失败"); //实例化接口请求头信息 var requestHeader = new ApiRequestHeader(context, false); if (requestHeader == null) { return(resultobj); } var msg = ""; //请求验签成功 resultobj.code = ResponseCode.Success.ToInt32(); resultobj.msg = "请求验证成功"; //return resultobj; //判断必填参数 var required_result = RequiredAttribute.ValidateRequired(requestHeader, ref msg); //必填验证通过 if (!required_result) { resultobj.msg = msg + "当前验证无法通过"; return(resultobj); } //获取平台所有的应用信息 var userinfo_key = "applyitems"; var applyItems = CacheManager.Create().Get <List <AppLyInfo> >(userinfo_key); if (applyItems == null || !applyItems.Any()) { //数据库获取应用信息 applyItems = this.Query <AppLyInfo>() .Where("数据标识", 1) .GetModelList(); if (applyItems != null && applyItems.Any()) { var obj = CacheManager.Create().Set(userinfo_key, applyItems); } } if (applyItems == null || !applyItems.Any()) { resultobj.msg = msg + "没有找到平台的应用信息"; return(resultobj); } //获取请求的平台应用信息 var applyInfo = applyItems.FirstOrDefault(t => t.APPID == requestHeader.appid); if (applyInfo == null) { resultobj.msg = requestHeader.appid + "非法!"; return(resultobj); } else { //缓存当前登录的应用信息 UserAppLyInfo userAppLyInfo = new UserAppLyInfo() { app_id = applyInfo.APPID, app_name = applyInfo.应用名称, private_key = applyInfo.私钥, public_key = applyInfo.公钥, sourse = applyInfo.使用平台 }; var userApplyinfo_key = "user_applyitem:" + requestHeader.appid; var obj = CacheManager.Create().Set(userApplyinfo_key, userAppLyInfo.ToJson()); //请求验签成功 resultobj.code = ResponseCode.Success.ToInt32(); resultobj.msg = "请求验证成功"; } return(resultobj); }