//<summary> //签名 //</summary> //<param name="signatureInfo"></param> //<returns></returns> private bool checkSign(Entity.SignatureInfo signInfo) { using (var manage = new Data.CMSManage()) { var modelInfo = manage.getModuleInfo(signInfo.AppId.ToLower(), Entity.ModuleType.API); if (modelInfo != null && modelInfo.Enabled == 1) { Int64 timestamp = 0; Int64.TryParse(signInfo.Timestamp, out timestamp); var span = Utils.getTimestamp() - timestamp; if (modelInfo.TimestampExpired > 0 && (span > modelInfo.TimestampExpired || span < 0 - modelInfo.TimestampExpired)) { return(false);//时间戳过期 } //获取参数 var sortDic = getRequest(); sortDic.Add("appsecret", modelInfo.AppSecret); //MD5加密 var sign = getSign(sortDic); return(sign.Equals(signInfo.Sign)); } else { return(false); } } }
protected override void OnActionExecuting(ActionExecutingContext filterContext) { var signatureInfo = new Entity.SignatureInfo(); if (TryUpdateModel(signatureInfo))//获取APPID { if (signatureInfo != null && !string.IsNullOrEmpty(signatureInfo.AppId) && !string.IsNullOrEmpty(signatureInfo.Nonce) && !string.IsNullOrEmpty(signatureInfo.Sign) && !string.IsNullOrEmpty(signatureInfo.Timestamp)) { if (!checkSign(signatureInfo)) { filterContext.Result = getResult(Entity.Error.签名失败, "签名失败!"); return; } } else { filterContext.Result = getResult(Entity.Error.签名失败, "参数错误!"); return; } } else { filterContext.Result = getResult(Entity.Error.签名失败, "参数错误!"); return; } base.OnActionExecuting(filterContext); }