单点登录(自制登录页面)
场景描述:用户刷卡登录,刷卡后在输入框会有一串数字,是唯一的。与用户表【用户卡号】字段对应
第一步:管理员登录进行第三方系统授权
第二步:编写第三方程序(含登录页面,新建C#桌面程序)
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 "";
}
学习了
ValidateLogin,第4个参数是做什么用的
楼主这个直接是免密码任何用户都能登入啊
学习
单点登录(自制登录页面)
本文2024-09-16 18:42:43发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-23911.html