单点登录(自制登录页面)原创
金蝶云社区-勤劳的小蜜蜂
勤劳的小蜜蜂
21人赞赏了该文章 2238次浏览 未经作者许可,禁止转载编辑于2020年01月07日 16:26:18

场景描述:用户刷卡登录,刷卡后在输入框会有一串数字,是唯一的。与用户表【用户卡号】字段对应

第一步:管理员登录进行第三方系统授权

image.png

第二步:编写第三方程序(含登录页面,新建C#桌面程序)

image.png

private void button1_Click(object sender, EventArgs e)

        {

            //[1]数据验证

            if (this.textBox1.Text.Trim().Length==0)

            {

                //this.lblMsg.Text = "请输入登陆账号!";

                MessageBox.Show("请输入登陆账号!");

                return;

            }

            else

            {

                string loginNumber = this.textBox1.Text.Trim();

                //string userName = Convert.ToString(this.Context.UserName);

                string flag = getLoginUserName(loginNumber);

                if (!"".Equals(flag))

                {

                    int lcId = 2052;

                    long timestamp = DateTimeFormatUtils.CurrentTimeMillis() / 1000;//时间戳

                    string dbId = "5db7948c4848e5";//数据中心ID本地

                    string usserName = flag;//用户名称

                    string appId = "204262_T0eARYhETnr+X+XF0cwrV6WM7s6d6Dts";//第三方系统应用Id本地

                   string appSecret = "dc856ca146a64d80b4fe944a57201486";//第三方系统应用秘钥本地

                    string[] arr = new string[] { dbId, usserName, appId, appSecret, timestamp.ToString() };

                    string sign = Kingdee.BOS.Util.SHA1Util.GetSignature(arr);//签名

                    SimplePassportLoginArg arg = new SimplePassportLoginArg();

                    arg.appid = appId;

                    arg.dbid = dbId;

                    arg.lcid = lcId.ToString();

                    arg.origintype = "SimPas";

                    arg.signeddata = sign;

                    arg.timestamp = timestamp.ToString();

                    arg.username = usserName;

                    arg.entryrole = string.Empty;

                    arg.formid = string.Empty;

                    arg.formtype = string.Empty;

                    arg.otherargs = string.Empty;

                    arg.pkid = string.Empty;

                    string argJosn = Kingdee.BOS.JSON.KDObjectConverter.SerializeObject(arg);//json格式

                    string argJsonBase64 = System.Text.UTF8Encoding.Default.GetBytes(argJosn).ToBase64();//base64编码

                   string silverlightUrl = "http://localhost/K3Cloud/Silverlight/IndexSL.aspx?ud=" + argJsonBase64;// Silverlight入口链接本地

                    System.Diagnostics.Process.Start("iexplore.exe", silverlightUrl);

                }

            }

           

        }


       

        public string  getLoginUserName(string FLoginNumber)

        {

            K3CloudApiClient client = new K3CloudApiClient("http://desktop-ba7vdbv/k3cloud/");//本地

           var loginResult = client.ValidateLogin("5db7948c4848e5", "Administrator", "888888", 2052);//本地

            var resultType = JObject.Parse(loginResult)["LoginResultType"].Value<int>();

            //登录结果类型等于1,代表登录成功

            if (resultType == 1)

            {

                //client.View("SEC_User", "{"CreateOrgId":0,"Number":"","Id":""}");

                object[] paramInfo = new object[]

               {

                    "{\"FormId\":\"SEC_User\","+// 用户formid

                    "\"TopRowCount\":0,"+// 最多允许查询的数量,0或者不要此属性表示不限制

                    "\"Limit\":10,"+// 分页取数每页允许获取的数据,最大不能超过2000

                    "\"StartRow\":0,"+// 分页取数开始行索引,从0开始,例如每页10行数据,第2页开始是10,第3页开始是20

                    "\"FilterString\":\"FLoginNumber='"+FLoginNumber+"'\","+// 过滤条件

                  //  "\"OrderString\":\"FID ASC\","+// 排序条件                    

                    "\"FieldKeys\":\"FName\"}"// 获取采购订单数据参数,内码,供应商id,物料id,物料编码,物料名称


               };

                //调用查询接口 

                List<List<object>> ret = client.Execute<List<List<object>>>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery", paramInfo);

                if (ret.Count>0)

                {

                    string FName = ret[0][0].ToString();

                    return FName;

                }

                else

                {

                    MessageBox.Show("该卡号不存在!!!请联系系统管理员");

                }

            }


            return "";

        }




赞 21