起步软件技术论坛-X3

 找回密码
 立即注册
搜索
123
返回列表 发新帖
楼主: Mephist

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

[复制链接]
 楼主| 发表于 2007-2-12 10:56:56 | 显示全部楼层
对, 从网页logon,不显示登陆对话框,,这个是已经实现了的.
现在的需求是对于没有分配功能权限的系统用户,不让登陆平台,而目前的形式是没有任何功能权限的用户同样能正常登陆平台
回复 支持 反对

使用道具 举报

发表于 2007-2-12 13:45:43 | 显示全部楼层
现在的现象是不是,如果没有功能权限,也是可以进入平台的?
回复 支持 反对

使用道具 举报

发表于 2007-2-12 13:49:34 | 显示全部楼层
Logon是调用的底层平台的Operator.Logon,不是系统初始化中的
如果要实现这个需求,只能在网页中,通过sql语句判断是否某个用户时候存在可以执行的功能,如果有,才调用logon登陆平台
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-12 14:32:28 | 显示全部楼层
最初由 alang 发布
[B]Logon是调用的底层平台的Operator.Logon,不是系统初始化中的
如果要实现这个需求,只能在网页中,通过sql语句判断是否某个用户时候存在可以执行的功能,如果有,才调用lo..

以下省略...... [/B]


对,本来是想这样的,但是我问了下你们那边的技术人员, 他说不建议直接操作数据库, 最好在平台处理. 所以才这样做.. 如果可以查sql的话,请问下怎么可以统计某用户的所有已分配功能权限 ???
回复 支持 反对

使用道具 举报

发表于 2007-2-12 17:49:10 | 显示全部楼层
思路如下:
  1 组织单元的功能权限在 组织机构索引表中,fid="OrgUnit.FuncRef"
2 针对人员,找到他的每一个人员成员(在组织机构系统表中,FKind=".PSM")
3 然后一级一级往上,找每一级组织单元的功能权限
这样就可以找到人员的所有功能权限了
回复 支持 反对

使用道具 举报

发表于 2007-2-12 19:21:19 | 显示全部楼层
插一下, ,楼主可以看看系统初始话的这段代码:

procedure TInit.DoRun;
var
  lContext: TContext;
  lOperator: TOperator;
  lClassURL: TBizClassURL;
begin
  inherited DoRun;

  lClassURL := TBizClassURL.Create;
  try
    lClassURL.BizURL.URL := 'Biz:\COLLABORATION\TaskServiceFunc.Func';
    if BizSys.BizSystem.URLExists(lClassURL.BizURL) then
    begin
      FCMPlatform := BizSys.BizService.CreateBizObject(lClassURL, Context) as TFunc;
      FCMPlatform.Run('');
    end
    else
      FCMPlatform := nil;
  finally
    lClassURL.Free;
  end;

  lContext := Context.FindParentContext(BizSys.IL_PERSON);
  if lContext <> nil then
    lOperator := lContext.Owner as TOperator;

  if lOperator <> nil then
    TSystemCore.SetOperator(lOperator);

  if TSystemCore.Operator = nil then   //满足这个条件才执行TSystemCore.Logon方法
  begin
    FLogoned := InternalLogon;
    if not FLogoned then
    begin
      Terminate;
      Exit;
    end;
  end;

  { 给公共组件库中的当前用户属性赋值 }
  TCommonComponentLibrary.UserSystem.CurrentUser := TSystemCore.Operator;
  { 调用系统接口方法创建主窗体 }
  MainForm := TSystemCore.SystemInterface.CreateMainForm(Context);
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-13 11:17:02 | 显示全部楼层
最初由 alang 发布
[B]思路如下:
  1 组织单元的功能权限在 组织机构索引表中,fid="OrgUnit.FuncRef"
2 针对人员,找到他的每一个人员成员(在组织机构系统表中,FKind=".PSM")
3 然后一?.

以下省略...... [/B]


是不是说要判断人员,人员所属岗位,部门,机构是不是都没有被分配功能???
这样好像比较麻烦额..问下有没得现成的sql.
回复 支持 反对

使用道具 举报

发表于 2007-2-14 10:03:31 | 显示全部楼层
没有现成的sql语句,都是要通过代码拼出来的
回复 支持 反对

使用道具 举报

发表于 2007-3-5 09:12:40 | 显示全部楼层
楼主的问题解决了没?
回复 支持 反对

使用道具 举报

发表于 2007-3-14 09:16:09 | 显示全部楼层
先结贴了!
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-26 20:59 , Processed in 0.033915 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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