起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 971|回复: 29

单点登陆权限验证问题**

[复制链接]
发表于 2007-2-7 16:55:38 | 显示全部楼层 |阅读模式
我们用的版本是3.0.5.2119
需求:
单点登陆的时候,判断登陆的用户是否已经分配的功能权限,如果没有,则弹出友好提示,关闭窗口.

我现在修改了系统核心库的TSystemCore.Logon方法,从运行平台登陆的时候能够实现这样的需求,但是从IE登陆不行, 好像IE登陆的时候并不是从这里验证的, 请问下要怎么改???
回复

使用道具 举报

发表于 2007-2-7 17:37:44 | 显示全部楼层
统一身份认证是不需要修改TSystemCore.Logon的方法的,你是按照哪个方案做的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-8 08:41:52 | 显示全部楼层
我只要按照从IE登陆是判读用户没有分配岗位那样来检查是否分配了功能权限就可以,
没明白您说的哪个方案
回复 支持 反对

使用道具 举报

发表于 2007-2-8 08:51:21 | 显示全部楼层
你把修改后的代码贴上来看看!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-8 09:00:05 | 显示全部楼层
static function TSystemCore.Logon(const ALogonID, APassword: string): Boolean;
const
  ErrMsg = '用户%s不能登陆,因为没有分配岗位或者用户%s已经被其他用户代理.';
  ErrMsg1 = '用户%s不能登陆,因为没有分配功能权限.';
var
  lOperator: TOperator;
begin
  CheckLogon(False);
  lOperator := Opr.Logon(ALogonID, APassword);
  Result := lOperator <> nil;
  if Result then
  begin
    if not Opr.IsSystemManager(ALogonID) and
      (lOperator.PositionList.Count = 0) then
    begin
      Opr.Logoff(lOperator);
      raise Exception.CreateFmt(ErrMsg, [ALogonID, ALogonID]);
    end;
    if lOperator.FuncItems.Count = 0 then
    begin
      Opr.Logoff(lOperator);
      raise Exception.CreateFmt(ErrMsg1, [ALogonID, ALogonID]);
    end ;
    FOperator := lOperator;
    UITheme.FSpace := UITheme.GetUserUISpace(lOperator);

    if Assigned(SystemInterface.OnLogonSucceed) then
      SystemInterface.OnLogonSucceed(FOperator);
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-8 10:52:22 | 显示全部楼层
顶下.
回复 支持 反对

使用道具 举报

发表于 2007-2-8 12:03:20 | 显示全部楼层
无论是使用IE还是客户端,都应该运行这段代码的,你确认一下IE的缓存是否清理了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-8 12:32:11 | 显示全部楼层
应该不是吧..我用没有分配岗位的用户从ie登陆,连错误提示都不是这个,您可以试下.
回复 支持 反对

使用道具 举报

发表于 2007-2-8 13:54:36 | 显示全部楼层
【选项】-【调试】-【常规】-【在游览器中调试】,你跟踪一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-8 14:21:26 | 显示全部楼层
<script type="text/javascript">
  document.title = BusinessX.DisplayName;
  BusinessX.ServerURL = "dcom://localhost";
  BusinessX.ShowSplash();
  BusinessX.UpdateVersion();
  BusinessX.Logon("ry2","");
  BusinessX.Init();
  BusinessX.CloseSplash();
  BusinessX.Run("Biz:\\SYSTEM\\Init.Func", "", "", "");
  document.title = BusinessX.DisplayName;
</script>

这个..从哪里调试 ?? 好像根本就没到Init.Func啊
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-27 11:50 , Processed in 0.051683 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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