예제 #1
0
        /// <summary>
        /// 接口用户签名认证
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public bool AuthenticationSign(APIReciveData im)
        {
            if (im.sign.IsNullOrEmpty() || im.nonce_str.IsNullOrEmpty() || im.usercode.IsNullOrEmpty() || im.apitime.IsNullOrEmpty())
            {
                return(false);
            }
            FF_User user = UsersBll.Instance.GetUserByAdmin(im.usercode);

            if (user == null)
            {
                return(false);
            }
            if (im.sign != SignUtil.CreateSign(im.apitime + user.SecretCode + im.nonce_str))
            {
                return(false);
            }
            return(true);
        }
예제 #2
0
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
            HttpContext.Current.Response.ContentType = "text/plain";
            ContentResult contentResult = new ContentResult();

            try
            {
                var    Request = filterContext.RequestContext.HttpContext.Request;
                string data    = "";
                if (Request.HttpMethod.ToLower() == "post")
                {
                    using (Stream s = System.Web.HttpContext.Current.Request.InputStream)
                    {
                        byte[] b = new byte[s.Length];
                        s.Read(b, 0, (int)s.Length);
                        data = Encoding.UTF8.GetString(b);
                    };
                }
                else
                {
                    data = filterContext.RequestContext.HttpContext.Request["data"].TryParseString();
                }
                if (data.IsNullOrEmpty())
                {
                    data = filterContext.Controller.TempData["fullData"].TryParseString();
                }


                if (data.IsNullOrEmpty())
                {
                    contentResult.Content = JsonStringResult.Error(OperateResCodeEnum.签名验证失败, "");
                    filterContext.Result  = contentResult;
                    return;
                }
                APIReciveData im = JsonConvert.DeserializeObject <APIReciveData>(data);

                //if (IsValidate && im.token.IsNullOrEmpty())
                //{
                //    //签名验证
                //    if (string.IsNullOrEmpty(im.appid))
                //    {
                //        contentResult.Content = OperateJsonRes.Error(OperateResCodeEnum.签名验证失败, "");
                //        filterContext.Result = contentResult;
                //        return;
                //    }
                //    if (string.IsNullOrEmpty(im.apiname))
                //    {
                //        contentResult.Content = OperateJsonRes.Error(OperateResCodeEnum.签名验证失败, "");
                //        filterContext.Result = contentResult;
                //        return;
                //    }
                //}
                //else
                if (IsValidate)
                {
                    if (!UsersBll.Instance.AuthenticationSign(im))
                    {
                        contentResult.Content = JsonStringResult.Error(OperateResCodeEnum.签名验证失败);
                        filterContext.Result  = contentResult;
                        return;
                    }

                    //var lt = LoginTokenBll.Instance.GetUserInfoByToken(im.token);
                    //if (lt == null)
                    //{
                    //    contentResult.Content = OperateJsonRes.Error(OperateResCodeEnum.登录失败, "");
                    //    filterContext.Result = contentResult;
                    //    return;
                    //}
                    //else if (lt.AddTime < DateTime.Now.AddDays(-1))
                    //{
                    //    LoginTokenBll.Instance.Delete(lt.ID);
                    //    contentResult.Content = OperateJsonRes.Error(OperateResCodeEnum.登录失败, "");
                    //    filterContext.Result = contentResult;
                    //    return;
                    //}
                    //else
                    //{
                    //    filterContext.Controller.TempData["LoginToken"] = lt;
                    //}
                }
                filterContext.Controller.TempData["param"]    = im.param.TryParseString();
                filterContext.Controller.TempData["version"]  = im.version.TryParseString();
                filterContext.Controller.TempData["fullData"] = JsonConvert.SerializeObject(im);
            }
            catch (Exception ex) {
                contentResult.Content = JsonStringResult.Error(OperateResCodeEnum.内部错误, "内部错误");
                filterContext.Result  = contentResult;
            }
            return;
        }