Пример #1
0
        /// <summary>
        /// 退出登录,即删除token
        /// </summary>
        /// <param name="c"></param>
        /// <param name="tokentype"></param>
        /// <returns></returns>
        public static ActionResult LogOut(Controller c, CertCenter.Models.DbModels.TokenType tokentype)
        {
            CertComm.ServerResult r          = new CertComm.ServerResult();
            JsonResult            jsonresult = new JsonResult();

            jsonresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            jsonresult.Data = r;

            string token = c.Request.Params["token"] ?? "";

            if (string.IsNullOrEmpty(token))
            {
                r.code = -905;
                r.msg  = "token不能为空。";
                return(jsonresult);
            }

            using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
            {
                PubConn.Open();
                DeleteToken(PubConn, token, tokentype);

                r.code = 1;
                r.msg  = "退出成功。";
                return(jsonresult);
            }
        }
Пример #2
0
        public static ActionResult GetTokenInfo(Controller c, CertCenter.Models.DbModels.TokenType tokentype)
        {
            CertComm.ServerResult sr         = new CertComm.ServerResult();
            JsonResult            jsonresult = new JsonResult();

            jsonresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            jsonresult.Data = sr;

            string token = c.Request.Params["token"];

            if (string.IsNullOrEmpty(token))
            {
                sr.code = -905;
                sr.msg  = "token不能为空。";
                return(jsonresult);
            }

            try
            {
                using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
                {
                    PubConn.Open();//打开基本
                    CertCenter.Models.DbModels.tb_token Ttoken = CertCenter.Models.TokenDal.Instance.GetToken(PubConn, token, tokentype);
                    if (Ttoken == null)
                    {
                        sr.code = -905;
#warning 修改提示
                        sr.msg = "token不存在";
                        return(jsonresult);
                    }
                    if (Ttoken.expires.CompareTo(DateTime.Now) <= 0)
                    {
                        sr.code = -905;
                        sr.msg  = "token过期。";
                        return(jsonresult);
                    }
                    #region 修改名字,除去修改了用户名后不同步的bug
                    using (XXF.Db.DbConn priconn = XXF.Db.DbConn.CreateConn(GetConnStr(tokentype, Ttoken.userid)))
                    {
                        Ttoken.username = CertCenter.Models.AccountDal.Instance.getUserName(priconn, Ttoken.userid, tokentype);
                    }
                    CertCenter.Models.TokenDal.Instance.Edit(PubConn, Ttoken, tokentype);
                    #endregion

                    sr.code     = 1;
                    sr.response = new { appid = Ttoken.appid, userid = Ttoken.userid, username = Ttoken.username, token = Ttoken.token, createtime = Ttoken.createtime.ToString("yyyy-MM-dd HH:mm:ss"), expires = Ttoken.expires.ToString("yyyy-MM-dd HH:mm:ss"), id = Ttoken.id };

                    return(jsonresult);
                }
            }
            catch (Exception ex)
            {
                sr.code = -1;
                sr.msg  = ex.Message;
                return(jsonresult);
            }
        }
Пример #3
0
        public static ActionResult RefreshToken(Controller c, CertCenter.Models.DbModels.TokenType tokentype)
        {
            CertComm.ServerResult r          = new CertComm.ServerResult();
            JsonResult            jsonresult = new JsonResult();

            jsonresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            jsonresult.Data = r;

            string token = c.Request.Params["token"] ?? "";

            if (string.IsNullOrEmpty(token))
            {
                r.code = -905;
                r.msg  = "token不能为空。";
                return(jsonresult);
            }
            try
            {
                using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
                {
                    PubConn.Open();//打开基本


                    CertCenter.Models.DbModels.tb_token Ttoken = RefreshToken(PubConn, token, "", tokentype);
                    if (Ttoken == null)
                    {
                        r.code = -101;
                        r.msg  = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                        return(jsonresult);
                    }

                    #region 修改名字,除去修改了用户名后不同步的bug
                    using (XXF.Db.DbConn priconn = XXF.Db.DbConn.CreateConn(GetConnStr(tokentype, Ttoken.userid)))
                    {
                        Ttoken.username = CertCenter.Models.AccountDal.Instance.getUserName(priconn, Ttoken.userid, tokentype);
                    }
                    CertCenter.Models.TokenDal.Instance.Edit(PubConn, Ttoken, tokentype);
                    #endregion

                    r.code     = 1;
                    r.response = Ttoken;
                    return(jsonresult);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #4
0
        public ActionResult GetAppSecret(Controller controller)
        {
            JsonResult jsonr = new JsonResult();

            jsonr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            CertComm.ServerResult r = new CertComm.ServerResult();
            jsonr.Data = r;
            string appid = controller.Request["appid"];

            if (string.IsNullOrEmpty(appid))
            {
                r.code = -3;
                r.msg  = "请求参数appid不能为空";
                return(jsonr);
            }
            using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
            {
                PubConn.Open();//打开基本
                bool ex = CertCenter.Models.AppDal.Instance.ExitAppid(PubConn, appid);
                if (!ex)
                {
                    r.code = -1;
                    r.msg  = "appid不存在";
                    return(jsonr);
                }

                CertCenter.Models.DbModels.app app = CertCenter.Models.AppDal.Instance.GetAppInfo(PubConn, appid);
                if (app == null)
                {
                    r.code = -1;
                    r.msg  = "appid不存在";
                    return(jsonr);
                }
                else
                {
                    r.code     = 1;
                    r.msg      = "OK";
                    r.response = app.appsecret;
                    return(jsonr);
                }
            }

            return(jsonr);
        }
Пример #5
0
        public ActionResult GetAppSecret(Controller controller)
        {
            JsonResult jsonr = new JsonResult();
            jsonr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            CertComm.ServerResult r = new CertComm.ServerResult();
            jsonr.Data = r;
            string appid = controller.Request["appid"];
            if (string.IsNullOrEmpty(appid))
            {
                r.code = -3;
                r.msg = "请求参数appid不能为空";
                return jsonr;
            }
            using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
            {
                PubConn.Open();//打开基本
                bool ex = CertCenter.Models.AppDal.Instance.ExitAppid(PubConn, appid);
                if (!ex)
                {
                    r.code = -1;
                    r.msg = "appid不存在";
                    return jsonr;
                }

                CertCenter.Models.DbModels.app app = CertCenter.Models.AppDal.Instance.GetAppInfo(PubConn, appid);
                if (app == null)
                {
                    r.code = -1;
                    r.msg = "appid不存在";
                    return jsonr;
                }
                else
                {
                    r.code = 1;
                    r.msg = "OK";
                    r.response = app.appsecret;
                    return jsonr;
                }
            }

            return jsonr;
        }
Пример #6
0
        public static ActionResult TestAuth(Controller c, CertCenter.Models.DbModels.TokenType tokentype)
        {
            JsonResult jsonresult = new JsonResult();
            jsonresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            CertComm.ServerResult r = new CertComm.ServerResult();
            jsonresult.Data = r;

            string token = c.Request.Params["token"];
            string _controller = c.Request.Params["controller"];
            string _area = c.Request.Params["area"];
            string _action = c.Request.Params["action"];

            string _apiname = c.Request.Params["apiname"];
            int _apiid = 0;
            int.TryParse(c.Request.Params["apiid"] ?? "", out _apiid);
            if (string.IsNullOrEmpty(token))
            {
                r.code = -905;
                r.msg = "token不能为空。";
                return jsonresult;
            }

            using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
            {
                PubConn.Open();//打开基本

                #region token
                CertCenter.Models.DbModels.tb_token Ttoken = CertCenter.Models.TokenDal.Instance.GetToken(PubConn, token, tokentype);
                if (Ttoken == null || Ttoken.expires.CompareTo(DateTime.Now) < 0)
                {
                    DeleteToken(PubConn, token, tokentype);
                    r.code = -101;
                    r.msg = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return jsonresult;
                }
                #endregion

                //#region user
                //#endregion

                #region //应用
                CertCenter.Models.DbModels.app appitem = CertCenter.Models.AppDal.Instance.GetAppInfo(PubConn, Ttoken.appid);
                if (appitem == null)
                {
                    r.code = -103;
                    r.msg = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return jsonresult;
                }
                else if (appitem.freeze == 1)
                {
                    r.code = -107;
                    r.msg = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return jsonresult;
                }
                #endregion

                #region 接口
                int apptype = TokenTypeGetAppType(tokentype);

                CertCenter.Models.DbModels.api apiinfo = null;
                if (_apiid > 0)
                {
                    apiinfo = CertCenter.Models.ApiDal.Instance.Get(PubConn, _apiid);
                }
                else if (!string.IsNullOrEmpty(_apiname))
                {
                    apiinfo = CertCenter.Models.ApiDal.Instance.Get(PubConn, _apiname, apptype);
                }
                else
                {
                    apiinfo = CertCenter.Models.ApiDal.Instance.Get(PubConn, _area, _controller, _action, apptype);
                }

                if (apiinfo == null)
                {
                    r.code = -108;
                    r.msg = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return jsonresult;
                }
                if (apiinfo.freeze == 1)
                {
                    r.code = -106;
                    r.msg = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return jsonresult;
                }
                if (appitem.appgradeno < appitem.appgradeno || apptype != apiinfo.apptype)
                {
                    r.code = -105;
                    r.msg = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return jsonresult;
                }
                #endregion

                r.code = 1;
                r.response = new { appid = Ttoken.appid, userid = Ttoken.userid, username = Ttoken.username, token = Ttoken.token, createtime = Ttoken.createtime.ToString("yyyy-MM-dd HH:mm:ss"), expires = Ttoken.expires.ToString("yyyy-MM-dd HH:mm:ss") };

                return jsonresult;
            }
        }
Пример #7
0
        public static ActionResult RefreshToken(Controller c, CertCenter.Models.DbModels.TokenType tokentype)
        {
            CertComm.ServerResult r = new CertComm.ServerResult();
            JsonResult jsonresult = new JsonResult();
            jsonresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            jsonresult.Data = r;

            string token = c.Request.Params["token"] ?? "";
            if (string.IsNullOrEmpty(token))
            {
                r.code = -905;
                r.msg = "token不能为空。";
                return jsonresult;
            }
            try
            {
                using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
                {
                    PubConn.Open();//打开基本

                    CertCenter.Models.DbModels.tb_token Ttoken = RefreshToken(PubConn, token, "", tokentype);
                    if (Ttoken == null)
                    {
                        r.code = -101;
                        r.msg = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                        return jsonresult;
                    }

                    #region 修改名字,除去修改了用户名后不同步的bug
                    using (XXF.Db.DbConn priconn = XXF.Db.DbConn.CreateConn(GetConnStr(tokentype, Ttoken.userid)))
                    {
                        Ttoken.username = CertCenter.Models.AccountDal.Instance.getUserName(priconn, Ttoken.userid, tokentype);
                    }
                    CertCenter.Models.TokenDal.Instance.Edit(PubConn, Ttoken, tokentype);
                    #endregion

                    r.code = 1;
                    r.response = Ttoken;
                    return jsonresult;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #8
0
        /// <summary>
        /// 退出登录,即删除token
        /// </summary>
        /// <param name="c"></param>
        /// <param name="tokentype"></param>
        /// <returns></returns>
        public static ActionResult LogOut(Controller c, CertCenter.Models.DbModels.TokenType tokentype)
        {
            CertComm.ServerResult r = new CertComm.ServerResult();
            JsonResult jsonresult = new JsonResult();
            jsonresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            jsonresult.Data = r;

            string token = c.Request.Params["token"] ?? "";
            if (string.IsNullOrEmpty(token))
            {
                r.code = -905;
                r.msg = "token不能为空。";
                return jsonresult;
            }

            using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
            {
                PubConn.Open();
                DeleteToken(PubConn, token, tokentype);

                r.code = 1;
                r.msg = "退出成功。";
                return jsonresult;
            }
        }
Пример #9
0
        public static ActionResult GetTokenInfo(Controller c, CertCenter.Models.DbModels.TokenType tokentype)
        {
            CertComm.ServerResult sr = new CertComm.ServerResult();
            JsonResult jsonresult = new JsonResult();
            jsonresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            jsonresult.Data = sr;

            string token = c.Request.Params["token"];

            if (string.IsNullOrEmpty(token))
            {
                sr.code = -905;
                sr.msg = "token不能为空。";
                return jsonresult;
            }

            try
            {
                using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
                {
                    PubConn.Open();//打开基本
                    CertCenter.Models.DbModels.tb_token Ttoken = CertCenter.Models.TokenDal.Instance.GetToken(PubConn, token, tokentype);
                    if (Ttoken == null)
                    {
                        sr.code = -905;
            #warning 修改提示
                        sr.msg = "token不存在";
                        return jsonresult;
                    }
                    if (Ttoken.expires.CompareTo(DateTime.Now) <= 0)
                    {
                        sr.code = -905;
                        sr.msg = "token过期。";
                        return jsonresult;
                    }
                    #region 修改名字,除去修改了用户名后不同步的bug
                    using (XXF.Db.DbConn priconn = XXF.Db.DbConn.CreateConn(GetConnStr(tokentype, Ttoken.userid)))
                    {
                        Ttoken.username = CertCenter.Models.AccountDal.Instance.getUserName(priconn, Ttoken.userid, tokentype);
                    }
                    CertCenter.Models.TokenDal.Instance.Edit(PubConn, Ttoken, tokentype);
                    #endregion

                    sr.code = 1;
                    sr.response = new { appid = Ttoken.appid, userid = Ttoken.userid, username = Ttoken.username, token = Ttoken.token, createtime = Ttoken.createtime.ToString("yyyy-MM-dd HH:mm:ss"), expires = Ttoken.expires.ToString("yyyy-MM-dd HH:mm:ss"), id = Ttoken.id };

                    return jsonresult;
                }
            }
            catch (Exception ex)
            {
                sr.code = -1;
                sr.msg = ex.Message;
                return jsonresult;
            }
        }
Пример #10
0
        public static ActionResult GetApiList(Controller c, CertCenter.Models.DbModels.TokenType tokentype)
        {
            JsonResult jsonresult = new JsonResult();
            jsonresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            CertComm.ServerResult r = new CertComm.ServerResult();
            jsonresult.Data = r;

            string token = c.Request.Params["token"];

            if (string.IsNullOrEmpty(token))
            {
                r.code = -905;
                r.msg = "token不能为空。";
                return jsonresult;
            }

            using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
            {
                PubConn.Open();//打开基本

                #region token
                CertCenter.Models.DbModels.tb_token Token = CertCenter.Models.TokenDal.Instance.GetToken(PubConn, token, tokentype);
                if (Token == null || Token.expires.CompareTo(DateTime.Now) < 0)
                {
                    DeleteToken(PubConn, token, tokentype);
                    r.code = -101;
                    r.msg = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return jsonresult;
                }
                #endregion
                List<CertCenter.Models.DbModels.api> apis = new List<CertCenter.Models.DbModels.api>();
                CertCenter.Models.DbModels.app appinfo = CertCenter.Models.AppDal.Instance.GetAppInfo(PubConn, Token.appid);
                if (appinfo == null)
                {
                    DeleteToken(PubConn, token, tokentype);
                    r.code = -103;
                    r.msg = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return jsonresult;
                }
                int apptype = 0;
                switch (tokentype)
                {
                    case CertCenter.Models.DbModels.TokenType.managetoken:
                        apptype = 0;
                        break;
                    case CertCenter.Models.DbModels.TokenType.shoptoken:
                        apptype = 2;
                        break;
                    case CertCenter.Models.DbModels.TokenType.usertoken:
                        apptype = 1;
                        break;
                }

                for (int i = appinfo.appgradeno; i > 0; i--)
                {
                    apis.AddRange(CertCenter.Models.ApiDal.Instance.GetGradeApis(PubConn, apptype, i));
                }
                r.code = 1;
                r.response = apis;
                return jsonresult;
            }
        }
Пример #11
0
        public static ActionResult GetToken(Controller c, CertCenter.Models.DbModels.TokenType tokentype)
        {
            JsonResult jsonr = new JsonResult();
            jsonr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            CertComm.ServerResult sr = new CertComm.ServerResult();
            string msg = "";
            jsonr.Data = sr;

            //sr.code = 1;
            //sr.response = new CertCenter.Models.DbModels.tb_token()
            //{
            //    appid = "abc",
            //    token = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
            //    userid = "ad",
            //    id = "",
            //    username = "******"
            //};
            //return jsonr;

            Dictionary<string, string> para = CertCenter.Models.CertCenterComm.GetRequestPara(c, new string[] { "appid", "userid", "timespan", "sign", "pwd" });
            sr.code = CertCenter.Models.CertCenterComm.ValiFields(para, out msg);
            if (sr.code < 0)
            {
                sr.msg = msg;
                return jsonr;
            }
            string userid = para["userid"];
            string appid = para["appid"];
            string pwd = para["pwd"];
            string sign = para["sign"];
            string timespan = para["timespan"];
            if (!CertComm.Authcomm.TestTimeSpanOk(timespan, 10 * 60))
            {
                sr.code = -102;
                sr.msg = CertCenter.Models.AUTH_CODE_MSG.Get(sr.code);
                return jsonr;
            }
            using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
            {
                PubConn.Open();//打开基本

                CertCenter.Models.DbModels.app appitem = CertCenter.Models.AppDal.Instance.GetAppInfo(PubConn, appid);
                if (appitem == null || TokenTypeGetAppType(tokentype) != appitem.apptype)
                {
                    sr.code = -103;
                    sr.msg = CertCenter.Models.AUTH_CODE_MSG.Get(sr.code);
                    return jsonr;
                }
                else if (appitem.freeze == 1)
                {
                    sr.code = -107;
                    sr.msg = CertCenter.Models.AUTH_CODE_MSG.Get(sr.code);
                    return jsonr;
                }

                string nowsign = CertComm.Authcomm.ToSign(para, appitem.appsecret);
                if (nowsign.ToLower() != para["sign"].ToLower())
                {
                    sr.code = -104;
                    sr.msg = CertCenter.Models.AUTH_CODE_MSG.Get(sr.code);
                    return jsonr;
                }

                string bsconstr = GetConnStr(tokentype, userid);
                if (string.IsNullOrEmpty(bsconstr))
                {
                    sr.code = -112;
                    sr.msg = CertCenter.Models.AUTH_CODE_MSG.Get(sr.code);
                    return jsonr;
                }
                string username = "";
                string identityid = "";
                using (XXF.Db.DbConn dydpubConn = XXF.Db.DbConfig.CreateConn(XXF.Db.DbType.SQLSERVER, bsconstr))
                {
                    dydpubConn.Open();
                    ////用户相关验证
                    switch (tokentype)
                    {
                        case CertCenter.Models.DbModels.TokenType.managetoken:
                            sr.code = ManageAccountVali(dydpubConn, userid, pwd, out username, out identityid);
                            break;
                        case CertCenter.Models.DbModels.TokenType.shoptoken:
                            string tt = "";
                            sr.code = ShopAccountVali(dydpubConn, userid, pwd, out username, out tt, out identityid);
                            userid = tt;
                            break;
                        case CertCenter.Models.DbModels.TokenType.usertoken:
                            sr.code = UserAccountVali(dydpubConn, userid, pwd, out username, out identityid);
                            break;
                        default:
                            break;
                    }
                }
                if (sr.code < 0)
                {
                    sr.msg = CertCenter.Models.AUTH_CODE_MSG.Get(sr.code);
                    return jsonr;
                }

                CertCenter.Models.DbModels.tb_token Ttoken = CertCenter.Models.TokenDal.Instance.GetToken(PubConn, userid, appid, tokentype);
                if (Ttoken == null || Ttoken.expires.CompareTo(DateTime.Now) < 0)
                {
                    if (Ttoken != null)
                    {
                        DeleteToken(PubConn, Ttoken.token, tokentype);
                    }
                    Ttoken = new CertCenter.Models.DbModels.tb_token();
                    Ttoken.appid = appid;
                    Ttoken.token = Guid.NewGuid().ToString().Replace("-", "");
                    Ttoken.userid = userid;
                    Ttoken.id = identityid;
                    Ttoken.username = username;
                    CertCenter.Models.TokenDal.Instance.Add(PubConn, Ttoken, tokentype);
                }
                else
                {
                    Ttoken = RefreshToken(PubConn, Ttoken.token, username, tokentype);
                }
                sr.code = 1;
                sr.response = new { appid = Ttoken.appid, userid = Ttoken.userid, username = Ttoken.username, token = Ttoken.token, createtime = Ttoken.createtime.ToString("yyyy-MM-dd HH:mm:ss"), expires = Ttoken.expires.ToString("yyyy-MM-dd HH:mm:ss"), id = Ttoken.id };
                return jsonr;

            }
        }
Пример #12
0
        public static ActionResult Visit(Func<ActionResult> action, Controller c)
        {
            var mapapi = ApiInvokeMap.MapCore.GetInstance();
            mapapi.Increase(ConbineUrl(
                XXF.Db.LibConvert.NullToStr(c.ControllerContext.RouteData.Values["area"]).ToString().ToLower(),
                c.ControllerContext.RouteData.Values["controller"].ToString().ToLower(),
                c.ControllerContext.RouteData.Values["action"].ToString().ToLower()));

            //XXF.Log.TimeWatchLog twl = new XXF.Log.TimeWatchLog();
            try
            {
                var r = action();
                //twl.Write(c.Request.Url.ToString());
                return r;
            }
            catch (Exception ex)
            {
                System.IO.File.AppendAllText(c.Server.MapPath("~/error.log"), DateTime.Now.ToString() + "\r\n\tURL:" + c.Request.Url.ToString() + "\r\n\tFormData:" + System.Web.HttpUtility.UrlDecode(c.Request.Form.ToString()) + "\r\n\tException:" + ex.Message + "\r\n" + ex.StackTrace + "\r\n\t");
                JsonResult sresult = new JsonResult();
                CertComm.ServerResult r = new CertComm.ServerResult();
                r.code = -100;
                r.msg = "系统正忙或服务器内部错误,请重试。";
                sresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
                sresult.Data = r;
                return sresult;
            }

            #region old
            //System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
            //sw.Start();

            //Task<ActionResult> t = new Task<ActionResult>(action);
            //#region 成功
            //t.ContinueWith((x) =>
            //{
            //    try
            //    {
            //        System.IO.File.AppendAllText(c.Server.MapPath("~/ope" + DateTime.Now.ToString("yyMMdd") + ".log"), DateTime.Now.ToString() + " TIME:" + sw.Elapsed.TotalMinutes + " \r\n\tFormData:" + System.Web.HttpUtility.UrlDecode(c.Request.Form.ToString()) + "\r\n\tURL:" + c.Request.Url.ToString() + "\r\n");
            //    }
            //    catch (Exception ex) { }
            //}, TaskContinuationOptions.OnlyOnRanToCompletion);
            //#endregion

            //try
            //{
            //    t.Start();
            //    if (t.Wait(TimeSpan.FromSeconds(30)))
            //    {
            //        ActionResult actresult = t.Result;
            //        return actresult;
            //    }
            //    throw new Exception("[task time out]");
            //}
            //catch (Exception ex)
            //{
            //    Task.Factory.StartNew(() =>
            //    {
            //        System.IO.File.AppendAllText(c.Server.MapPath("~/error.log"), DateTime.Now.ToString() + "\r\n\tURL:" + c.Request.Url.ToString() + "\r\n\tFormData:" + System.Web.HttpUtility.UrlDecode(c.Request.Form.ToString()) + "\r\n\tException:" + ex.Message + "\r\n" + ex.StackTrace + "\r\n\t");
            //    });
            //    JsonResult sresult = new JsonResult();
            //    CertComm.ServerResult r = new CertComm.ServerResult();
            //    r.code = -100;
            //    r.msg = "系统正忙或服务器内部错误,请重试。";
            //    sresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            //    sresult.Data = r;
            //    return sresult;
            //}
            #endregion
        }
Пример #13
0
        public static ActionResult GetApiList(Controller c, CertCenter.Models.DbModels.TokenType tokentype)
        {
            JsonResult jsonresult = new JsonResult();

            jsonresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            CertComm.ServerResult r = new CertComm.ServerResult();
            jsonresult.Data = r;

            string token = c.Request.Params["token"];

            if (string.IsNullOrEmpty(token))
            {
                r.code = -905;
                r.msg  = "token不能为空。";
                return(jsonresult);
            }

            using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
            {
                PubConn.Open();//打开基本

                #region token
                CertCenter.Models.DbModels.tb_token Token = CertCenter.Models.TokenDal.Instance.GetToken(PubConn, token, tokentype);
                if (Token == null || Token.expires.CompareTo(DateTime.Now) < 0)
                {
                    DeleteToken(PubConn, token, tokentype);
                    r.code = -101;
                    r.msg  = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return(jsonresult);
                }
                #endregion
                List <CertCenter.Models.DbModels.api> apis    = new List <CertCenter.Models.DbModels.api>();
                CertCenter.Models.DbModels.app        appinfo = CertCenter.Models.AppDal.Instance.GetAppInfo(PubConn, Token.appid);
                if (appinfo == null)
                {
                    DeleteToken(PubConn, token, tokentype);
                    r.code = -103;
                    r.msg  = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return(jsonresult);
                }
                int apptype = 0;
                switch (tokentype)
                {
                case CertCenter.Models.DbModels.TokenType.managetoken:
                    apptype = 0;
                    break;

                case CertCenter.Models.DbModels.TokenType.shoptoken:
                    apptype = 2;
                    break;

                case CertCenter.Models.DbModels.TokenType.usertoken:
                    apptype = 1;
                    break;
                }

                for (int i = appinfo.appgradeno; i > 0; i--)
                {
                    apis.AddRange(CertCenter.Models.ApiDal.Instance.GetGradeApis(PubConn, apptype, i));
                }
                r.code     = 1;
                r.response = apis;
                return(jsonresult);
            }
        }
Пример #14
0
        public static ActionResult TestAuth(Controller c, CertCenter.Models.DbModels.TokenType tokentype)
        {
            JsonResult jsonresult = new JsonResult();

            jsonresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            CertComm.ServerResult r = new CertComm.ServerResult();
            jsonresult.Data = r;

            string token       = c.Request.Params["token"];
            string _controller = c.Request.Params["controller"];
            string _area       = c.Request.Params["area"];
            string _action     = c.Request.Params["action"];

            string _apiname = c.Request.Params["apiname"];
            int    _apiid   = 0;

            int.TryParse(c.Request.Params["apiid"] ?? "", out _apiid);
            if (string.IsNullOrEmpty(token))
            {
                r.code = -905;
                r.msg  = "token不能为空。";
                return(jsonresult);
            }

            using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
            {
                PubConn.Open();//打开基本

                #region token
                CertCenter.Models.DbModels.tb_token Ttoken = CertCenter.Models.TokenDal.Instance.GetToken(PubConn, token, tokentype);
                if (Ttoken == null || Ttoken.expires.CompareTo(DateTime.Now) < 0)
                {
                    DeleteToken(PubConn, token, tokentype);
                    r.code = -101;
                    r.msg  = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return(jsonresult);
                }
                #endregion

                //#region user
                //#endregion

                #region //应用
                CertCenter.Models.DbModels.app appitem = CertCenter.Models.AppDal.Instance.GetAppInfo(PubConn, Ttoken.appid);
                if (appitem == null)
                {
                    r.code = -103;
                    r.msg  = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return(jsonresult);
                }
                else if (appitem.freeze == 1)
                {
                    r.code = -107;
                    r.msg  = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return(jsonresult);
                }
                #endregion

                #region 接口
                int apptype = TokenTypeGetAppType(tokentype);

                CertCenter.Models.DbModels.api apiinfo = null;
                if (_apiid > 0)
                {
                    apiinfo = CertCenter.Models.ApiDal.Instance.Get(PubConn, _apiid);
                }
                else if (!string.IsNullOrEmpty(_apiname))
                {
                    apiinfo = CertCenter.Models.ApiDal.Instance.Get(PubConn, _apiname, apptype);
                }
                else
                {
                    apiinfo = CertCenter.Models.ApiDal.Instance.Get(PubConn, _area, _controller, _action, apptype);
                }

                if (apiinfo == null)
                {
                    r.code = -108;
                    r.msg  = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return(jsonresult);
                }
                if (apiinfo.freeze == 1)
                {
                    r.code = -106;
                    r.msg  = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return(jsonresult);
                }
                if (appitem.appgradeno < appitem.appgradeno || apptype != apiinfo.apptype)
                {
                    r.code = -105;
                    r.msg  = CertCenter.Models.AUTH_CODE_MSG.Get(r.code);
                    return(jsonresult);
                }
                #endregion

                r.code     = 1;
                r.response = new { appid = Ttoken.appid, userid = Ttoken.userid, username = Ttoken.username, token = Ttoken.token, createtime = Ttoken.createtime.ToString("yyyy-MM-dd HH:mm:ss"), expires = Ttoken.expires.ToString("yyyy-MM-dd HH:mm:ss") };

                return(jsonresult);
            }
        }
Пример #15
0
        public static ActionResult GetToken(Controller c, CertCenter.Models.DbModels.TokenType tokentype)
        {
            JsonResult jsonr = new JsonResult();

            jsonr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            CertComm.ServerResult sr = new CertComm.ServerResult();
            string msg = "";

            jsonr.Data = sr;

            //sr.code = 1;
            //sr.response = new CertCenter.Models.DbModels.tb_token()
            //{
            //    appid = "abc",
            //    token = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
            //    userid = "ad",
            //    id = "",
            //    username = "******"
            //};
            //return jsonr;

            Dictionary <string, string> para = CertCenter.Models.CertCenterComm.GetRequestPara(c, new string[] { "appid", "userid", "timespan", "sign", "pwd" });

            sr.code = CertCenter.Models.CertCenterComm.ValiFields(para, out msg);
            if (sr.code < 0)
            {
                sr.msg = msg;
                return(jsonr);
            }
            string userid   = para["userid"];
            string appid    = para["appid"];
            string pwd      = para["pwd"];
            string sign     = para["sign"];
            string timespan = para["timespan"];

            if (!CertComm.Authcomm.TestTimeSpanOk(timespan, 10 * 60))
            {
                sr.code = -102;
                sr.msg  = CertCenter.Models.AUTH_CODE_MSG.Get(sr.code);
                return(jsonr);
            }
            using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
            {
                PubConn.Open();//打开基本

                CertCenter.Models.DbModels.app appitem = CertCenter.Models.AppDal.Instance.GetAppInfo(PubConn, appid);
                if (appitem == null || TokenTypeGetAppType(tokentype) != appitem.apptype)
                {
                    sr.code = -103;
                    sr.msg  = CertCenter.Models.AUTH_CODE_MSG.Get(sr.code);
                    return(jsonr);
                }
                else if (appitem.freeze == 1)
                {
                    sr.code = -107;
                    sr.msg  = CertCenter.Models.AUTH_CODE_MSG.Get(sr.code);
                    return(jsonr);
                }

                string nowsign = CertComm.Authcomm.ToSign(para, appitem.appsecret);
                if (nowsign.ToLower() != para["sign"].ToLower())
                {
                    sr.code = -104;
                    sr.msg  = CertCenter.Models.AUTH_CODE_MSG.Get(sr.code);
                    return(jsonr);
                }

                string bsconstr = GetConnStr(tokentype, userid);
                if (string.IsNullOrEmpty(bsconstr))
                {
                    sr.code = -112;
                    sr.msg  = CertCenter.Models.AUTH_CODE_MSG.Get(sr.code);
                    return(jsonr);
                }
                string username   = "";
                string identityid = "";
                using (XXF.Db.DbConn dydpubConn = XXF.Db.DbConfig.CreateConn(XXF.Db.DbType.SQLSERVER, bsconstr))
                {
                    dydpubConn.Open();
                    ////用户相关验证
                    switch (tokentype)
                    {
                    case CertCenter.Models.DbModels.TokenType.managetoken:
                        sr.code = ManageAccountVali(dydpubConn, userid, pwd, out username, out identityid);
                        break;

                    case CertCenter.Models.DbModels.TokenType.shoptoken:
                        string tt = "";
                        sr.code = ShopAccountVali(dydpubConn, userid, pwd, out username, out tt, out identityid);
                        userid  = tt;
                        break;

                    case CertCenter.Models.DbModels.TokenType.usertoken:
                        sr.code = UserAccountVali(dydpubConn, userid, pwd, out username, out identityid);
                        break;

                    default:
                        break;
                    }
                }
                if (sr.code < 0)
                {
                    sr.msg = CertCenter.Models.AUTH_CODE_MSG.Get(sr.code);
                    return(jsonr);
                }

                CertCenter.Models.DbModels.tb_token Ttoken = CertCenter.Models.TokenDal.Instance.GetToken(PubConn, userid, appid, tokentype);
                if (Ttoken == null || Ttoken.expires.CompareTo(DateTime.Now) < 0)
                {
                    if (Ttoken != null)
                    {
                        DeleteToken(PubConn, Ttoken.token, tokentype);
                    }
                    Ttoken          = new CertCenter.Models.DbModels.tb_token();
                    Ttoken.appid    = appid;
                    Ttoken.token    = Guid.NewGuid().ToString().Replace("-", "");
                    Ttoken.userid   = userid;
                    Ttoken.id       = identityid;
                    Ttoken.username = username;
                    CertCenter.Models.TokenDal.Instance.Add(PubConn, Ttoken, tokentype);
                }
                else
                {
                    Ttoken = RefreshToken(PubConn, Ttoken.token, username, tokentype);
                }
                sr.code     = 1;
                sr.response = new { appid = Ttoken.appid, userid = Ttoken.userid, username = Ttoken.username, token = Ttoken.token, createtime = Ttoken.createtime.ToString("yyyy-MM-dd HH:mm:ss"), expires = Ttoken.expires.ToString("yyyy-MM-dd HH:mm:ss"), id = Ttoken.id };
                return(jsonr);
            }
        }
Пример #16
0
        public static JsonResult Visit(Func <XXF.Db.DbConn, object> action, Controller controller)
        {
            //msgs.Add(-100, "认证失败");
            //msgs.Add(-905, "token不存在或已过期");
            //msgs.Add(-102, "请求超时");
            //msgs.Add(-103, "	sign不正确");
            //msgs.Add(-104, "无权操作该接口");
            //msgs.Add(-105, "接口已被冻结");
            //msgs.Add(-106, "应用被冻结");

            //msgs.Add(-111, "参数不完整");
            //msgs.Add(-112, "用户不存在");
            //msgs.Add(-113, "pwd不正确");
            //msgs.Add(-114, "用户被冻结");

            CertComm.ServerResult       sr   = new CertComm.ServerResult();
            Dictionary <string, string> para = GetRequestPara(controller);

            if (para.ContainsKey("appid") && string.IsNullOrEmpty(para["appid"]))
            {
                sr.code = -111;
                sr.msg  = "appid不能为空";
            }
            else if (para.ContainsKey("timespan") && string.IsNullOrEmpty(para["timespan"]))
            {
                sr.code = -111;
                sr.msg  = "timespan不能为空";
            }
            else if (para.ContainsKey("sign") && string.IsNullOrEmpty(para["sign"]))
            {
                sr.code = -111;
                sr.msg  = "sign不能为空";
            }
            else if (para.ContainsKey("userid") && string.IsNullOrEmpty(para["userid"]))
            {
                sr.code = -111;
                sr.msg  = "userid不能为空";
            }
            else if (para.ContainsKey("pwd") && string.IsNullOrEmpty(para["pwd"]))
            {
                sr.code = -111;
                sr.msg  = "pwd不能为空";
            }
            else
            {
                if (!CertComm.Authcomm.TestTimeSpanOk(para["timespan"], 10 * 60))
                {
                    sr.code = -102;
                    sr.msg  = AUTH_CODE_MSG.Get(sr.code);
                }
                else
                {
                    using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
                    {
                        PubConn.Open();
                        Models.DbModels.app appitem = Models.AppDal.Instance.GetAppInfo(PubConn, para["appid"]);
                        if (appitem == null)
                        {
                            sr.code = -103;
                            sr.msg  = AUTH_CODE_MSG.Get(sr.code);
                        }
                        else if (appitem.freeze == 1)
                        {
                            sr.code = -107;
                            sr.msg  = AUTH_CODE_MSG.Get(sr.code);
                        }
                        else
                        {
                            string nowsign = CertComm.Authcomm.ToSign(para, appitem.appsecret);
                            if (nowsign.ToLower() != para["sign"].ToLower())
                            {
                                sr.code = -104;
                                sr.msg  = AUTH_CODE_MSG.Get(sr.code);
                            }
                            else//用户相关验证
                            {
                                Models.DbModels.manage manager = Models.AccountDal.Instance.getManage(PubConn, para["userid"]);
                                if (manager == null)
                                {
                                    sr.code = -112;
                                    sr.msg  = AUTH_CODE_MSG.Get(sr.code);
                                }
                                else if (manager.freeze == 1)
                                {
                                    sr.code = -114;
                                    sr.msg  = AUTH_CODE_MSG.Get(sr.code);
                                }
                                else if (CertComm.Authcomm.ToMD5String(manager.pwd) != para["pwd"])
                                {
                                    sr.code = -113;
                                    sr.msg  = AUTH_CODE_MSG.Get(sr.code);
                                }
                            }
                        }
                    }
                }
            }
            if (sr.code < -100)
            {
                return(new JsonResult()
                {
                    Data = sr
                });
            }
            return(null);
        }
Пример #17
0
        public static JsonResult Visit(Func<XXF.Db.DbConn, object> action, Controller controller)
        {
            //msgs.Add(-100, "认证失败");
            //msgs.Add(-905, "token不存在或已过期");
            //msgs.Add(-102, "请求超时");
            //msgs.Add(-103, "	sign不正确");
            //msgs.Add(-104, "无权操作该接口");
            //msgs.Add(-105, "接口已被冻结");
            //msgs.Add(-106, "应用被冻结");

            //msgs.Add(-111, "参数不完整");
            //msgs.Add(-112, "用户不存在");
            //msgs.Add(-113, "pwd不正确");
            //msgs.Add(-114, "用户被冻结");

            CertComm.ServerResult sr = new CertComm.ServerResult();
            Dictionary<string, string> para = GetRequestPara(controller);
            if (para.ContainsKey("appid") && string.IsNullOrEmpty(para["appid"]))
            {
                sr.code = -111;
                sr.msg = "appid不能为空";
            }
            else if (para.ContainsKey("timespan") && string.IsNullOrEmpty(para["timespan"]))
            {
                sr.code = -111;
                sr.msg = "timespan不能为空";
            }
            else if (para.ContainsKey("sign") && string.IsNullOrEmpty(para["sign"]))
            {
                sr.code = -111;
                sr.msg = "sign不能为空";
            }
            else if (para.ContainsKey("userid") && string.IsNullOrEmpty(para["userid"]))
            {
                sr.code = -111;
                sr.msg = "userid不能为空";
            }
            else if (para.ContainsKey("pwd") && string.IsNullOrEmpty(para["pwd"]))
            {
                sr.code = -111;
                sr.msg = "pwd不能为空";
            }
            else
            {
                if (!CertComm.Authcomm.TestTimeSpanOk(para["timespan"], 10 * 60))
                {
                    sr.code = -102;
                    sr.msg = AUTH_CODE_MSG.Get(sr.code);
                }
                else
                {
                    using (XXF.Db.DbConn PubConn = XXF.Db.DbConfig.CreateConn())
                    {
                        PubConn.Open();
                        Models.DbModels.app appitem = Models.AppDal.Instance.GetAppInfo(PubConn, para["appid"]);
                        if (appitem == null)
                        {
                            sr.code = -103;
                            sr.msg = AUTH_CODE_MSG.Get(sr.code);
                        }
                        else if (appitem.freeze == 1)
                        {
                            sr.code = -107;
                            sr.msg = AUTH_CODE_MSG.Get(sr.code);
                        }
                        else
                        {
                            string nowsign = CertComm.Authcomm.ToSign(para, appitem.appsecret);
                            if (nowsign.ToLower() != para["sign"].ToLower())
                            {
                                sr.code = -104;
                                sr.msg = AUTH_CODE_MSG.Get(sr.code);
                            }
                            else//用户相关验证
                            {
                                Models.DbModels.manage manager = Models.AccountDal.Instance.getManage(PubConn, para["userid"]);
                                if (manager == null)
                                {
                                    sr.code = -112;
                                    sr.msg = AUTH_CODE_MSG.Get(sr.code);
                                }
                                else if (manager.freeze == 1)
                                {
                                    sr.code = -114;
                                    sr.msg = AUTH_CODE_MSG.Get(sr.code);
                                }
                                else if (CertComm.Authcomm.ToMD5String(manager.pwd) != para["pwd"])
                                {
                                    sr.code = -113;
                                    sr.msg = AUTH_CODE_MSG.Get(sr.code);
                                }
                            }
                        }
                    }
                }
            }
            if (sr.code < -100)
            {
                return new JsonResult() { Data = sr };
            }
            return null;
        }
Пример #18
0
        public static ActionResult Visit(Func <ActionResult> action, Controller c)
        {
            var mapapi = ApiInvokeMap.MapCore.GetInstance();

            mapapi.Increase(ConbineUrl(
                                XXF.Db.LibConvert.NullToStr(c.ControllerContext.RouteData.Values["area"]).ToString().ToLower(),
                                c.ControllerContext.RouteData.Values["controller"].ToString().ToLower(),
                                c.ControllerContext.RouteData.Values["action"].ToString().ToLower()));

            //XXF.Log.TimeWatchLog twl = new XXF.Log.TimeWatchLog();
            try
            {
                var r = action();
                //twl.Write(c.Request.Url.ToString());
                return(r);
            }
            catch (Exception ex)
            {
                System.IO.File.AppendAllText(c.Server.MapPath("~/error.log"), DateTime.Now.ToString() + "\r\n\tURL:" + c.Request.Url.ToString() + "\r\n\tFormData:" + System.Web.HttpUtility.UrlDecode(c.Request.Form.ToString()) + "\r\n\tException:" + ex.Message + "\r\n" + ex.StackTrace + "\r\n\t");
                JsonResult            sresult = new JsonResult();
                CertComm.ServerResult r       = new CertComm.ServerResult();
                r.code = -100;
                r.msg  = "系统正忙或服务器内部错误,请重试。";
                sresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
                sresult.Data = r;
                return(sresult);
            }

            #region old
            //System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
            //sw.Start();

            //Task<ActionResult> t = new Task<ActionResult>(action);
            //#region 成功
            //t.ContinueWith((x) =>
            //{
            //    try
            //    {
            //        System.IO.File.AppendAllText(c.Server.MapPath("~/ope" + DateTime.Now.ToString("yyMMdd") + ".log"), DateTime.Now.ToString() + " TIME:" + sw.Elapsed.TotalMinutes + " \r\n\tFormData:" + System.Web.HttpUtility.UrlDecode(c.Request.Form.ToString()) + "\r\n\tURL:" + c.Request.Url.ToString() + "\r\n");
            //    }
            //    catch (Exception ex) { }
            //}, TaskContinuationOptions.OnlyOnRanToCompletion);
            //#endregion

            //try
            //{
            //    t.Start();
            //    if (t.Wait(TimeSpan.FromSeconds(30)))
            //    {
            //        ActionResult actresult = t.Result;
            //        return actresult;
            //    }
            //    throw new Exception("[task time out]");
            //}
            //catch (Exception ex)
            //{
            //    Task.Factory.StartNew(() =>
            //    {
            //        System.IO.File.AppendAllText(c.Server.MapPath("~/error.log"), DateTime.Now.ToString() + "\r\n\tURL:" + c.Request.Url.ToString() + "\r\n\tFormData:" + System.Web.HttpUtility.UrlDecode(c.Request.Form.ToString()) + "\r\n\tException:" + ex.Message + "\r\n" + ex.StackTrace + "\r\n\t");
            //    });
            //    JsonResult sresult = new JsonResult();
            //    CertComm.ServerResult r = new CertComm.ServerResult();
            //    r.code = -100;
            //    r.msg = "系统正忙或服务器内部错误,请重试。";
            //    sresult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
            //    sresult.Data = r;
            //    return sresult;
            //}
            #endregion
        }