CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  基础类

急!在pb中怎样设定用户的权限?

楼主qsbn(不要笑我)2003-06-02 17:50:26 在 PowerBuilder / 基础类 提问

本人在毕设阶段,做了一个小的mis系统,想请教各位高手,如何根据不同的用户权限实现不同的操作?急用,最好有例子,小女子谢过了。 问题点数:0、回复次数:12Top

1 楼Tigersong(宋)回复于 2003-06-02 18:04:45 得分 0

若将权限划分至窗口级别,由于在一个模块下的所有菜单项应该是不重复的,而这些菜单项又唯一对应一个窗口。在此情况下,个人想法如下:  
  创建一个表按用户记录其所能操作的窗口  
  结构:用户代号、模块名称、菜单项(窗口名)  
  然后在应用程序登陆的时候,先检查上表,获取此登陆用户所拥有的菜单项有那些。对用户不拥有的菜单项属性进行设置(设置为不可激活或者隐藏),这样也就体现了权限分配的问题。  
  Top

2 楼rogery(后来者__躬自厚而薄责于人)回复于 2003-06-02 18:12:02 得分 0

例子就不行了吧,因为我们毕竟在公司,传公司的程序不太好吧。说个方法就可以了吧。  
    Tigersong(宋)   ,说的对可以通过权限表来读取所属权限。  
   
  还有一个方法:  
  就是用一个笨办法,把所有的窗口所在菜单的节点找到,做一个W窗口来设置这些节点的值。然后把可用值和不可用值写到一个表中去。  
   
  方法和宋兄的差不多。通过树形控件比较好实现。  
  Top

3 楼hujunyan(深呼吸)回复于 2003-06-02 18:13:42 得分 0

可以根据不同用户,给与不同权限的菜单(可以让一些选项值成为invisible),然后把每个人的权限信息存储在数据库中.  
  Top

4 楼sure2002(剑心)回复于 2003-06-02 22:34:56 得分 0

我最近就在做一个软件.正在考虑分配权限的问题.一个失败的权限分配就像"运动员去领奖了却摔了一跤"一样.先明确哪些权限,而且要考虑有些权限可能扩展,有些可能取消,如果设计不好完全有可能使以后的权限维护十分混乱,我统一在menu窗口中设置权限,如果分散开来维护十分困难。  
  比如:  
  w_produce.cb_1.enabled   =   false  
  w_lack.ddlb_1.visible     =   true  
  等等Top

5 楼cnliutian(手起刀落,小日本鸡鸡被砍掉)回复于 2003-06-03 06:44:24 得分 0

强烈upTop

6 楼qqqwww999888(月月鸟)回复于 2003-06-03 08:53:20 得分 0

upTop

7 楼enzey(sun)回复于 2003-06-03 10:45:40 得分 0

对系统管理人员来说灵活方便地设置不同人员的对程序的不同权限,并能够不以用户身份进入程序也能查看到用户所拥有的权限,这是后台管理程序最基本的要求。本人通过实践摸索在PB中实现了用户程序到菜单条级权限的设置和查看。此模块方便之处是管理员在设置用户权限时所见的菜单与用户所用的菜单一致,用户有哪些权限一目了然。    
   
      PB与此相关的两个函数:Mid   and   Replace    
   
    1.函数Mid   (   string,   start   {,   length}   )    
   
    取string字串中第start项后的length位字串。    
   
    例:Mid("ABCDEFG",3,2)    
   
    返回值:"DE"    
   
    2.函数Replace   (   string1,   start,   n,   string2   )    
   
    替换string1中第start   项后n位,用string2   串。    
   
    例:Replace   (   "ABCDEFGH",3,2,"abc"   )    
   
    返回值:"ABCabcFGH"    
   
    到此可能用过PB的朋友已能猜出这两个函数就是在PB中实现菜单条权限定义的基础。    
   
    我们先假设我们应用程序的菜单如下图:    
   
    M_1  M_2  M_3   ......    
   
    M1_1    M2_1    M3_1    
   
    M1_2    M2_2    M3_2    
   
    M1_3    M2_3    M3_3    
   
    M1_4    M2_4    
   
       M2_5    
   
    要求菜单条变量名的定义严格按照矩阵方式定义。然后复制一份与应用程序菜单一样的菜单模式,用于系统授权模块使用,包括菜单条变量名也一样,只不过菜单条下无调用程序代码,而是菜单状态设置函数。设三个字符串全局变量,用于表示菜单条的状态。我们约定"0"表示菜单条为不可选,"1"为可选。    
   
  string   M1,M2,M3    
   
  M1="0000"     file://对应M_1的四个子菜单条    
   
  M2="00000"       file://对应M_2的五个子菜单条    
   
  M3="000"        file://对应M_1的三个子菜单条    
   
    设初始值为菜单条皆不可选。    
   
    在M1_1菜单下clicked事件程序为:    
   
  IF   m1_1.Checked   =   TRUE   THEN    
   
  m1_1.UnCheck(   )    
   
  M1   =   Replace(   M1,   1,   1,   "0")    
   
  ELSE    
   
  m1_1.Check(   )    
   
  M1   =   Replace(   M1,   1,   1,   "1")    
   
  END   IF    
   
    在M1_1菜单下clicked事件程序为:    
   
  IF   m1_2.Checked   =   TRUE   THEN    
   
  m1_2.UnCheck(   )    
   
  M1   =   Replace(   M1,   2,   1,   "0")    
   
  ELSE    
   
  m1_2.Check(   )    
   
  M1   =   Replace(   M1,   2,   1,   "1")    
   
  END   IF    
   
    .....其它以此类推    
   
    函数说明:    
   
  file://m1_2.Check(   )在所点选菜单条前加"V"(钩符号)    
   
  file://m1_2.UnCheck(   )   在所点选菜单条前去掉"V"(钩符号)    
   
    如果A用户可使用M1_1,M1_3;   M2_2;   M3_1。那通过你鼠标的点选,菜单状态变量的值应该为  
   
    值应该为:    
   
    M1="1010"    
   
    M2="01000"    
   
    M3="100"    
   
    如果B用户可使用M1_1;   M2_3,M2_4,M2_5;   M3_1,M3_2,M3_3。那通过你鼠标的点选,菜单状态变量的值应该为:    
   
    M1="1000"    
   
    M2="00111"    
   
    M3="111"    
   
      把此值对应存入A、B用户的权限字段中,在A、B用户进入应用程序时取出,对应设置菜单条的可用与不可用,即实现了对用户使用菜单权限的定义。    
  Top

8 楼waterstony(王小石)回复于 2003-06-03 11:22:52 得分 0

建用户和目录id对应的表,目录id分层,第一层两位(01),第二层4位(0101)...  
  然后建一张目录id与目录名对应的表Top

9 楼dfsde(开山)回复于 2003-07-13 11:25:39 得分 0

建个表   包括;用户   密码   权限[number   (1)]  
  在程序中用   if     语句  
  exmple:int   li_pop    
  ii_mod=1  
  il_cid=0  
  il_row=0  
  select   visible   into   :ii_pub   from   loues;  
    if   ii_pub=1   then     cb_vote_rst.enabled=true  
  select   pop   into   :li_pop   from   user   where   uid=:gs_uid;   /*用户的权限  
  if   li_pop=2   then  
  cb_set_cand.enabled=true  
  cb_vote_rst.enabled=true  
  end   if    
  dw_1.settransobject(sqlca)  
  dw_1.retrieve()  
     
  也就是说在表的加个字段是用来判断用户权限的      
  Top

10 楼dfsde(开山)回复于 2003-07-13 11:34:03 得分 0

上面的变量   gs_uid是全局变量   用来标识登陆用户的Top

11 楼2dian1G(小硬盘)回复于 2003-07-13 16:18:12 得分 0

模块表:菜单名,功能描述  
  用户可操作模块表:用户代码,菜单名,是否可以操作。  
  有了这个表结构,就全解决了。不用编那么长的程序,数据窗口还可以对操作员可操作的模块进行维护。Top

12 楼wooaoo(永远不放弃)回复于 2003-07-13 16:38:20 得分 0

建立权限表,倒入菜单信息,并给菜单项编号;(不要放在界面上,系统内部维护好)  
  (菜单编号,菜单名称)编号从1开始编起……  
  做一个用户设置权限的界面,列出所有菜单项供管理员给用户分配;有权限为0,无权限为1  
  在用户表中留一个字段存放权限,比如1011101代表这个用户有操作2号、7号菜单的权限  
   
   
  这是个比较简单的方法……  
   
  Top

相关问题

  • 2000下多用户权限设定的问题!
  • 如何设定(或更改)用户创建文件时的缺省权限???
  • 请问如何用sql语言建立sql用户,并设定权限?
  • 如何用代码设定用户和角色的权限?(200分)
  • oracle 用户权限?
  • 请高手帮忙,如何获取网络上共享文件夹对某一用户的权限的设定。
  • 设定用户
  • 我新建了一个用户组guest2, 怎样设定此组的权限, 如: 我想此组的用户不能读f:
  • NT检测用户权限?
  • 用户权限问题

关键词

  • 用户
  • 函数
  • pb
  • 模块
  • 应用程序
  • 字段
  • 维护
  • check
  • 权限
  • 菜单

得分解答快速导航

  • 帖主:qsbn

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo