예제 #1
0
        /// <summary>
        /// 初始化分布式节点管理参数
        /// </summary>
        private DistributeDataNodeManagerParams InitNodeDistManagerParams()
        {
            DistributeDataNodeManagerParams distManagerParam = null; //分布式管理参数
            List <SSY_DATANODE_ADDR>        dataNodes        = new List <SSY_DATANODE_ADDR>();

            UseNodeCollection unc = new UseNodeCollection();
            SSY_ResponseResult <UseNodeCollection> res = this.GetUseNodeCollection("1");

            if (res.IsCompleted)
            {
                #region 初始化数据节点

                unc = res.Result;
                //分布式参数
                distManagerParam = new DistributeDataNodeManagerParams();
                distManagerParam.DistributeDataNode    = new DistributeDataNode();
                distManagerParam.DistributeActionIden  = DistributeActionIden.Query; //默认给查询,需要在具体业务工作方法重新设定
                distManagerParam.DistriActionSqlParams = new List <DistActionSql>(); //由于支持单点操作延后执行,需要在具体业务工作方法重新设定
                distManagerParam.DistributeDataNode    = new DistributeDataNode();   //只需处理工厂配置参数,其他参数系统框架会自动根据数据节点及配置文件设定

                if (unc.DataNodeList.Count > 0)
                {
                    foreach (var item in unc.DataNodeList)
                    {
                        //若配置加密数据库相关参数,这里需要先进行解密
                        item.Url_addr = Common.Security.DeEncryptInfo(item.Url_addr.ToString(), item.Encrykeystr,
                                                                      int.Parse(item.Encryhashlenth), item.Isencrydbconn.ToUpper());

                        item.Data_schema = Common.Security.DeEncryptInfo(item.Data_schema.ToString(), item.Encrykeystr,
                                                                         int.Parse(item.Encryhashlenth), item.Isencrydbconn.ToUpper());
                        item.Data_user = Common.Security.DeEncryptInfo(item.Data_user.ToString(), item.Encrykeystr,
                                                                       int.Parse(item.Encryhashlenth), item.Isencrydbconn.ToUpper());
                        item.Data_password = Common.Security.DeEncryptInfo(item.Data_password.ToString(), item.Encrykeystr,
                                                                           int.Parse(item.Encryhashlenth), item.Isencrydbconn.ToUpper());

                        item.Data_conn = Common.Security.DeEncryptInfo(item.Data_conn.ToString(), item.Encrykeystr,
                                                                       int.Parse(item.Encryhashlenth), item.Isencrydbconn.ToUpper());

                        dataNodes.Add(item);
                    }
                    distManagerParam.DistributeDataNodes = dataNodes;
                    distManagerParam.DistributeDataNode.DbFactoryName = unc.DataNodeList[0].DBFactoryName;
                }

                #endregion
            }

            return(distManagerParam);
        }
예제 #2
0
        /// <summary>
        /// 获取单个业务服务名称
        /// </summary>
        /// <param name="serviceIden"></param>
        /// <returns></returns>
        private string _GetSingleBizSvc(string serviceIden)
        {
            string serviceName = string.Empty;

            List <SSY_SERVICESITE_SERVICES> svcList   = new List <SSY_SERVICESITE_SERVICES>();
            SSY_SERVICESITE_SERVICES        modeltemp = new SSY_SERVICESITE_SERVICES();
            SSY_ResponseResult <IEnumerable <SSY_SERVICESITE_SERVICES> > resSvc = this.GetNodeServiceSiteService(modeltemp);

            svcList = resSvc.Result.ToList <SSY_SERVICESITE_SERVICES>();

            if (UtilitysForT <SSY_SERVICESITE_SERVICES> .ListHasData(svcList))
            {
                SSY_SERVICESITE_SERVICES svcTar = svcList.Find(delegate(SSY_SERVICESITE_SERVICES t) { return(t.Servicecode == serviceIden); });
                serviceName = svcTar.Service_relaUrl;
            }

            return(serviceName);
        }
예제 #3
0
        /// <summary>
        /// 获取令牌
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        public string GetToken(string req)
        {
            try
            {
                //解析参数实体
                reqdata = this.AnaRequestData(req);
                SSY_DYNAMICTOKEN model = this.json.Deserialize <SSY_DYNAMICTOKEN>(reqdata.reqdata);

                string bizErrStr     = ""; //具体失败的业务提示
                string FrameSecurity = "";
                //获取业务可用节点
                UseNodeCollection unc = new UseNodeCollection();
                SSY_ResponseResult <UseNodeCollection> res = this.GetUseNodeCollection("1");
                if (res.IsCompleted)
                {
                    unc = res.Result;
                    //获取业务节点地址
                    List <string> bizNodes = new List <string>();
                    for (int i = 0; i < unc.BizNodeList.Count; i++)
                    {
                        bizNodes.Add(unc.BizNodeList[i].Url_addr);
                    }
                    //获取业务服务
                    //string bizSvcName = this._GetSingleBizSvc(SSY_ServiceHost.Frame_FrameSecurityService);
                    //FrameSecurity = this.GetNodeBaseAddr(bizNodes, ServiceType.BizDueWith) + bizSvcName.TrimStart('/');

                    //调用普通登陆验证服务
                    DataRow drServ = this.GetServiceConfigOne("framesecurity", "1.0", "normal", "frameMgt", this.serviceConfig);
                    //FrameSecurity = base.envirObj.BizNodeAddr + "/" + drServ["servcodename"].ToString().TrimStart('/');

                    //获取本地配置业务节点
                    List <SSY_BIZNODE_ADDR> tmpBizNode = base.json.Deserialize <List <SSY_BIZNODE_ADDR> >(this._GetBizNodeAddr());
                    for (int i = 0; i < tmpBizNode.Count; i++)
                    {
                        if (tmpBizNode[i].Moudiden.ToUpper() == "FrameMgt".ToUpper())
                        {
                            FrameSecurity = tmpBizNode[i].Url_addr + "/" + drServ["servcodename"].ToString().TrimStart('/');
                            break;
                        }
                    }

                    //二次登陆验证
                    SSY_USER_DICT ud = new SSY_USER_DICT();
                    ud.USERID   = model.Remarks;
                    ud.PASSWORD = model.Timestampss;

                    this.reqdata         = new ReqData();
                    this.reqdata.reqdata = json.Serialize(ud);

                    string reslogin             = DynamicInvokeWCF.Create <IFrameSecurity>(FrameSecurity).GetUserForLogin2N(json.Serialize(this.reqdata));
                    List <SSY_USER_DICT> resuds = new List <SSY_USER_DICT>();
                    this.resdata = json.Deserialize <RespData>(reslogin);
                    if (this.resdata.respflag == "1")
                    {
                        #region 登陆成功

                        string cols                   = "id|dynamictoken|remarks|timestampss";
                        string colTypes               = "String|String|String|String";
                        string tokenFilePath          = APPConfig.GetAPPConfig().GetConfigValue("XmldataPath", "") + "\\SSY_DYNAMICTOKEN.xml";
                        System.Data.DataTable dtToken = Common.Utility.GetTableFromXml(cols, colTypes, tokenFilePath);

                        if (Utility.DtHasData(dtToken))
                        {
                            //随机获取令牌
                            model.Dynamictoken = dtToken.Rows[Utility.GetRandNum(1, 99)]["dynamictoken"].ToString();
                            if (string.IsNullOrEmpty(model.Dynamictoken))
                            {
                                bizErrStr = this.GetI18nLangItem("noFoundTokenText", this.i18nModuleCurrLang);
                            }
                            else
                            {
                                resdata = this.MakeResponseData("1", base.successStr, model.Dynamictoken, string.Empty);
                            }
                        }
                        else
                        {
                            bizErrStr = this.GetI18nLangItem("noFoundTokens", this.i18nModuleCurrLang);
                        }

                        #endregion
                    }
                    else
                    {
                        bizErrStr = this.resdata.resptoolstr;
                    }
                }
                else
                {
                    bizErrStr = res.Exception;
                }
                if (!string.IsNullOrEmpty(bizErrStr))
                {
                    resdata = this.MakeResponseData("0", base.errorStr + bizErrStr, string.Empty, string.Empty);
                }
            }
            catch (Exception ex)
            {
                resdata = this.MakeResponseData("0", this.GetI18nLangItem("GetTokenErr", this.i18nModuleCurrLang) + ex.Message, string.Empty, string.Empty);
            }

            return(json.Serialize(resdata));
        }