二开案例.表单插件.获取会话Id(SessionId)
【应用场景】
获取登录用户的会话Id,从而实现免登录也可以执行某些操作。
【案例演示】
采购订单,通过表单插件获取会话Id。
【实现步骤】
<1>编写表单插件,代码如下。
using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.ServiceFacade.KDServiceFx; using Kingdee.BOS.Util; using System; using System.ComponentModel; using System.Linq; using System.Web; namespace Jac.XkDemo.BOS.Business.PlugIn { /// <summary> /// 【表单插件】获取会话Id(SessionId) /// </summary> [Description("【表单插件】获取会话Id(SessionId)"), HotUpdate] public class GetSessionIdFormPlugIn : AbstractDynamicFormPlugIn { /// <summary> /// ASP.NET的SessionId,ASP.NET根据此Id来识别当前请求发起的会话。 /// </summary> const string aspnet_sessionid_key = "ASP.NET_SessionId"; /// <summary> /// 金蝶的的SessionId,星空根据此Id来获取登录用户的会话信息。 /// </summary> const string kd_sessionid_key = "kdservice-sessionid"; public override void AfterBindData(EventArgs e) { base.AfterBindData(e); if (HttpContext.Current == null) { return; } string aspnet_sessionid = string.Empty; string kd_sessionid = string.Empty; KDServiceSession userSession = null; if (HttpContext.Current.Request.Cookies.AllKeys.Contains(aspnet_sessionid_key)) { aspnet_sessionid = HttpContext.Current.Request.Cookies[aspnet_sessionid_key].Value; } if (HttpContext.Current.Request.Cookies.AllKeys.Contains(kd_sessionid_key)) { // 获取金蝶会话Id kd_sessionid = HttpContext.Current.Request.Cookies[kd_sessionid_key].Value; if (!string.IsNullOrWhiteSpace(kd_sessionid)) { // 获取登录用户会话信息 userSession = SessionManager.GetCurrentSession(kd_sessionid); if (userSession != null) { // 获取登录用户上下文 var userContext = userSession.AppContext; // TODO } } } var log = string.Format("【ASP.NET_SessionId】:{0}\r\n【kdservice-sessionid】:{1}r\n【Context.UserToken】:{2}r\n【UserSession】:{3}" , aspnet_sessionid, kd_sessionid, Context.UserToken , userSession == null ? "" : string.Format("UserId:{0},UserName:{1},Token:{2}", userSession.UserId, userSession.UserName, userSession.Token)); this.View.ShowMessage(log); } } }
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展采购订单,注册表单插件,保存元数据,开发完毕。
【功能验证】
<1>登录业务站点,打开采购订单新增界面,即可获取到当前登录用户的会话信息。
---------------------------------------------------------------------------------------------------------
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.表单插件.获取会话Id(SessionId)
【应用场景】获取登录用户的会话Id,从而实现免登录也可以执行某些操作。【案例演示】采购订单,通过表单插件获取会话Id。【实现步骤】<1>...
点击下载文档
本文2024-09-23 04:07:45发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-163316.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章