WebApi自定义登录接口实现对当前组织的指定
说明:
1. 2021年3月份之后的补丁(包括3月份),在登录时要指定组织直接调用接口即可
1)系统封装的客户端调用ValidateLoginByOrgNumber方法
2)自定义客户端,调用服务端的ValidateUserByOrgNumber接口
2. 2019年06月27日之后的补丁(包括6月份)到2021年3月份之前的补丁,需要自定义Api接口,传入相应的组织,不需要对组织进行处理,调用下面的ValidateUserByOrg方法即可
3. 2019年06月27日之前的补丁,需要调用下面完整代码来设置组织
4. 自定义接口参考:https://vip.kingdee.com/article/216280036993550080
代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using Kingdee.BOS.Authentication; using Kingdee.BOS.WebApi.ServicesStub; using Kingdee.BOS.ServiceFacade.KDServiceFx; using Newtonsoft.Json; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Core.Permission; namespace Kingdee.BOS.TestPlugIn.WebApi { /// <summary> ///自定义登录接口 /// </summary> public class CustomLogIn : AbstractWebApiBusinessService { public CustomLogIn(KDServiceContext context) : base(context) { } // <summary> ///实现带组织参数传入 ///2019年06月27日之后(包括6月份)到2021年3月份之前的补丁,使用此方法 /// </summary> public string ValidateUserByOrg(string acctID, string username, string password, int lcid = 2052, string orgNumber = null) { AuthService autuService = new AuthService(this.KDContext); LoginInfo loginInfo = new LoginInfo() { OrgNumber = orgNumber, // 2019年06月27日 补丁才有 PasswordIsEncrypted = false, Username = username, AcctID = acctID, Password = password, AuthenticateType = AuthenticationType.PwdAuthentication, Lcid = lcid, KickoutFlag = 2 //1:踢人, 2:不踢人 }; LoginResult result =autuService.ValidateLoginInfo("", loginInfo); var jsonResult = JsonConvert.SerializeObject(result); return jsonResult; } // <summary> ///实现带组织参数传入 ///2019年06月27日之前的补丁,使用此方法 /// </summary> public string ValidateUserByOrg2(string acctID, string username, string password, int lcid = 2052, string orgNumber = null) { AuthService autuService = new AuthService(this.KDContext); LoginInfo loginInfo = new LoginInfo() { PasswordIsEncrypted = false, Username = username, AcctID = acctID, Password = password, AuthenticateType = AuthenticationType.PwdAuthentication, Lcid = lcid, KickoutFlag = 2 //1:踢人, 2:不踢人 }; LoginResult result =autuService.ValidateLoginInfo("", loginInfo); this.SetCustomOrg(result,orgNumber) var jsonResult = JsonConvert.SerializeObject(result); return jsonResult; } /// <summary> /// 给上下文设置当前组织 //2019年06月27日 补丁之前才需要调用 /// </summary> /// <param name="loginResult"></param> /// <param name="orgNumber"></param> private void SetCustomOrg(LoginResult loginResult, string orgNumber) { if (loginResult.IsSuccessByAPI && loginResult.Context != null) { var ctxnew = loginResult.Context; List<Organization> orgList = PermissionServiceHelper.GetUserOrg(ctxnew); if (!string.IsNullOrWhiteSpace(orgNumber))//1.如果客户端指定了组织,则使用指定的组织 { var defOrg = orgList.Where(t => t.Number.Equals(orgNumber)).FirstOrDefault(); if (defOrg != null) { ctxnew.CurrentOrganizationInfo = ConvertToOrganizationInfo(defOrg); return; } } string lstLoginOrgId = UserParamterServiceHelper.Load(ctxnew, Core.WebApiConst.LoginOrgValue, ctxnew.UserId); if (!string.IsNullOrEmpty(lstLoginOrgId)) { var orgId = Convert.ToInt64(lstLoginOrgId); if (orgList.Any(x => x.Id == orgId)) { BusinessEntity.Organizations.Organization curOrg = OrganizationServiceHelper.ReadOrgInfoByOrgId(ctxnew, orgId); ctxnew.CurrentOrganizationInfo = ConvertToOrganizationInfo2(curOrg); return; } } ctxnew.CurrentOrganizationInfo = ConvertToOrganizationInfo(orgList[0]); //3.默认取第一个组织 } } private OrganizationInfo ConvertToOrganizationInfo(Organization org) { return new OrganizationInfo() { ID = org.Id, Name = org.Name, FunctionIds = org.FunctionIds, AcctOrgType = org.AcctOrgType }; } private OrganizationInfo ConvertToOrganizationInfo2(BusinessEntity.Organizations.Organization org) { List<long> functions = new List<long>(); if (!string.IsNullOrEmpty(org.OrgFunctions)) { functions = Array.ConvertAll(org.OrgFunctions.Split(','), (a) => { return Convert.ToInt64(a); }).ToList(); } return new OrganizationInfo() { ID = org.Id, Name = org.Name, FunctionIds = functions, AcctOrgType = org.AcctOrgType }; } } }
WebApi自定义登录接口实现对当前组织的指定
说明:1. 2021年3月份之后的补丁(包括3月份),在登录时要指定组织直接调用接口即可1)系统封装的客户端调用ValidateLoginByOrgNumber方法...
点击下载文档
本文2024-09-23 03:45:15发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-160886.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章