Пример #1
0
        /// <summary>
        /// 根据手机号获取验证码
        /// </summary>
        public IHttpActionResult GetSms([FromBody] GetSmsReturn ret)
        {
            if (!string.IsNullOrEmpty(ret.getSmsTel))
            {
                GetSmsReturn retu = new GetSmsReturn();
                //生成随机数
                Random rad      = new Random();
                int    ranValue = rad.Next(100000, 999999);
                //访问url
                string url = "https://api.miaodiyun.com/20150822/industrySMS/sendSMS";
                //调用接口开发者id
                string accountSid = ConfigurationManager.AppSettings["SmsAccountSid"].ToString();
                string SmsToken   = ConfigurationManager.AppSettings["SmsToken"].ToString();
                //短信内容
                string content = "您的验证码为" + ranValue + ",如非本人操作,请忽略此短信。【中新一路农场】";
                //时间戳
                string timestamp = DateTime.Now.ToString("yyyyMMddHHmmss");
                //生成md5
                string md5str   = accountSid + SmsToken + timestamp;
                string sig      = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(md5str, "MD5").ToLower();
                string postdata = "&accountSid=" + accountSid + "&smsContent=" + content + "&to=" + ret.getSmsTel + "&timestamp=" + timestamp + "&sig=" + sig + "&respDataType=JSON";
                //获取到接口返回的json数据
                string getJson = BaseController.HttpUploadData(url, postdata);
                //反序列化json实例化为对象
                retu            = JsonConvert.DeserializeObject <GetSmsReturn>(getJson);
                retu.getSmsTel  = ret.getSmsTel;
                retu.getSmsDate = DateTime.Now;
                retu.VerCode    = ranValue.ToString();
                //添加调用接口信息到数据库
                gsSer.Add(retu);

                //调用成功返回码为00000 判断是否调用成功根据手机号和短信ID生成token
                if (retu.respCode == "00000")
                {
                    AuthInfo info = new AuthInfo();
                    info.UserTel   = retu.getSmsTel;
                    info.VerSmsID  = retu.smsId;
                    info.ValidTime = DateTime.Now;
                    //生成token
                    retu.auth = GetToken(info);
                }
                AuthResponse retResponse = new AuthResponse();
                retResponse.Code      = "200";
                retResponse.Message   = "调用接口成功";
                retResponse.NowTime   = DateTime.Now;
                retResponse.IsSuccess = true;
                //返回数据信息不返回发送的验证码
                retu.VerCode     = " ";
                retResponse.data = JsonConvert.SerializeObject(retu);
                //返回json数据
                return(Ok(retResponse));
            }
            else
            {
                AuthResponse retResponse = new AuthResponse();
                retResponse.Code    = "400";
                retResponse.Message = "参数错误";
                retResponse.NowTime = DateTime.Now;
                retResponse.data    = "";
                return(Ok(retResponse));
            }
        }
Пример #2
0
        public IHttpActionResult Login([FromBody] LoginLog getmodel)
        {
            /**所需参数  2018-09-25
             *  LoginTel:登录手机号
             *   SmsID:短信ID
             *   VerCode:短信验证码
             *   头部所需auth:token
             * */
            LoginLog     logModel = new LoginLog();
            GetSmsReturn retmodel = new GetSmsReturn();

            //手机号或者验证码或短信ID为空 返回400错误 缺少参数
            if (string.IsNullOrEmpty(getmodel.LoginTel) || string.IsNullOrEmpty(getmodel.SmsID))
            {
                AuthResponse retResponse = new AuthResponse();
                retResponse.Code      = "400";
                retResponse.Message   = "参数错误";
                retResponse.NowTime   = DateTime.Now;
                retResponse.data      = "";
                retResponse.IsSuccess = false;
                return(Ok(retResponse));
            }

            //获取解析过的token值 包含手机号和短信ID
            AuthInfo info = RequestContext.RouteData.Values["auth"] as AuthInfo;

            //根据smsid和手机号 查询验证码
            retmodel = gsSer.Where(a => a.smsId == getmodel.SmsID && a.getSmsTel == getmodel.LoginTel).FirstOrDefault();
            //根据传过来的手机号和验证码判断是否匹配并进行登录
            if (info.UserTel == getmodel.LoginTel && retmodel.VerCode == getmodel.VerCode)
            {
                logModel.LoginDate   = DateTime.Now;
                logModel.VerCode     = getmodel.VerCode;
                logModel.ErrorCode   = "0000";
                logModel.ErrorDec    = "登录成功";
                logModel.LoginRemark = "登录成功";
                logModel.LoginTel    = getmodel.LoginTel;
                logModel.SmsID       = getmodel.SmsID;
                logSer.Add(logModel);
                //返回接口json
                AuthResponse retResponse = new AuthResponse();
                retResponse.Code      = "200";
                retResponse.Message   = "调用接口成功";
                retResponse.NowTime   = DateTime.Now;
                retResponse.IsSuccess = true;
                retResponse.data      = JsonConvert.SerializeObject(logModel);
                return(Ok(retResponse));
            }
            else
            {
                logModel.LoginDate   = DateTime.Now;
                logModel.VerCode     = getmodel.VerCode;
                logModel.ErrorCode   = "0001";
                logModel.ErrorDec    = "登录失败";
                logModel.LoginRemark = "验证码和手机号不匹配";
                logModel.LoginTel    = getmodel.LoginTel;
                logModel.SmsID       = getmodel.SmsID;
                logSer.Add(logModel);
                //统一格式 返回接口json
                AuthResponse retResponse = new AuthResponse();
                retResponse.Code      = "200";
                retResponse.Message   = "调用接口成功";
                retResponse.NowTime   = DateTime.Now;
                retResponse.IsSuccess = true;
                retResponse.data      = JsonConvert.SerializeObject(logModel);
                return(Ok(retResponse));
            }
        }