起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 793|回复: 32

【搞定】单点登陆的问题**

[复制链接]
发表于 2007-5-30 15:20:44 | 显示全部楼层 |阅读模式
我们使用X3开发了一个系统,现在需要集成到另一个系统中,根据论坛中搜索的结果,修改Business.jsp文件如下:

  document.title = BusinessX.DisplayName;
  BusinessX.ServerURL = "<%= lSysServer.getSysServerURL()%>"
  //BusinessX.ShowSplash();
  BusinessX.UpdateVersion();
  BusinessX.Init();
  //BusinessX.CloseSplash();
  BusinessX.Logon("GLY", "");
  //BusinessX.Run("Biz:\\System\\Init.Func", "", "", "");
  BusinessX.Run("", "", "", "");
  //document.body.onbeforeunload=BeforeClose;
  document.title = BusinessX.DisplayName;

在上述修改的情况下,还是提示登陆窗口不能直接登陆。
于是又做了修改:

  document.title = BusinessX.DisplayName;
  BusinessX.ServerURL = "<%= lSysServer.getSysServerURL()%>"
  //BusinessX.ShowSplash();
  BusinessX.UpdateVersion();
  BusinessX.Init();
  //BusinessX.CloseSplash();
  BusinessX.Logon("GLY", "");
  //BusinessX.Run("Biz:\\System\\Init.Func", "", "", "");
  BusinessX.Run("", "", "", "");
  //document.body.onbeforeunload=BeforeClose;
  document.title = BusinessX.DisplayName;

这样可以在不现实登陆窗口的情况下直接登陆了,但是注销时被提示不能注销,并且在刷新页面时被提示用户已经登陆,如何解决这样的问题。
回复

使用道具 举报

 楼主| 发表于 2007-5-30 15:55:51 | 显示全部楼层
我们的要求是在已经存在的系统中集成X3开发的系统,系统登陆后选择《X3系统》进入由X3开发的系统并且不要提示登陆,直接进入X3系统;选择《SSO系统》进入其他系统;选择《注销》时,同时注销《X3系统》和《SSO系统》。
如图:

snap1.jpg

35.42 KB, 下载次数: 252

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-30 16:06:53 | 显示全部楼层
第一次进入《X3系统》是正确。但是选择注销后,提示不能注销。

snap2.jpg

24.05 KB, 下载次数: 246

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-30 16:15:35 | 显示全部楼层
在提示不能注销后,点击《X3系统》重新进入时提示已经登陆。
如图:

snap3.jpg

18.06 KB, 下载次数: 246

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-30 16:22:53 | 显示全部楼层
有几个问题我想搞清楚,请提供帮助。
1、不能注销的问题不重要,因为我们要求是通过《注销》退出系统而不是正在X3系统内容退出;问题是如何从X3系统的外部退出系统,文档上说使用Logoff注销,请问如何使用Logff?
2、用户已登陆的问题,我想是因为每次都调用Logon方法产生的,那么如何判断用户已经登陆到系统中,从而不调用Logon方法,直接登陆系统呢?
回复 支持 反对

使用道具 举报

发表于 2007-5-30 16:56:30 | 显示全部楼层
楼主,所有问题应该发到  Justep开发者论坛, 不是发到 X3协同产品公共讨论区
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-30 17:02:24 | 显示全部楼层
抱歉,急着问问题,没有注意。
回复 支持 反对

使用道具 举报

发表于 2007-5-30 18:46:44 | 显示全部楼层
5楼的问题可以通过在 系统初始化 功能扩展几个函数来处理
具体做法可以参考 系统初始化功能中的TGetOperatorID
在扩展的函数中注销,在扩展的函数中判断是否已经登陆
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-31 09:23:10 | 显示全部楼层
问题是,我需要在X3系统的外部判断是否登陆和调用注销,需要使用是ActiveX控件的方法,如何增加这些方法到ActiveX控件中,有没有方法可以不使用ActiveX控件直接操作X3系统中的各种功能(使用Java语言)。
回复 支持 反对

使用道具 举报

发表于 2007-6-1 13:42:58 | 显示全部楼层
按照8楼的方法做,参考系统初始化功能中的 TGetOperatorID 类
TGetOperatorID = class(TBusinessRuntimeServerMethod)
    function GetName: string; override;
    function Invoke(var Params: array of object): object; override;
  end;
你自己再定义自己的类,注意也要继承TBusinessRuntimeServerMethod类,在你自己的类的Invoke函数中就可以写相关的注销系统(Logoff),判断用户是否已经登录系统(TSystemCore.Operator = nil 判断系统的操作者是否为空)

外部调用
x3x.invokemethod('GetOperatorID')
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-11 12:35 , Processed in 0.045456 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表