请教高手,我目前正在做一个小系统软件,涉及到很多用户登陆使用.
以前我是通过登陆的时候来读取用户,判断用户是否可以打开菜单的来控制权限的,但
现在涉及的功能很多,不可能再用这种方法了,所以想请教各位高手,有没有好思路.
谢谢了!

解决方案 »

  1.   

    who:权限的拥用者或主体(principal、user、group、role、actor等等)what:权限针对的对象或资源(resource、class)。how:具体的权限(privilege, 正向授权与负向授权)。role:是角色,拥有一定数量的权限。operator:操作。表明对what的how 操作。1.自主型访问控制方法。目前在我国的大多数的信息系统中的访问控制模块中基本是借助于自主型访问控制方法中的访问控制列表(acls)。2.强制型访问控制方法。用于多层次安全级别的军事应用。3.基于角色的访问控制方法(rbac)。是目前公认的解决大型企业的统一资源访问控制的有效方法。其显著的两大特征是:1.减小授权管理的复杂性,降低管理开销。2.灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。
      

  2.   

    可以參考下這個demo...
    http://download.csdn.net/down/1395085/rumb07SQL Server权限数据库设计...
    http://news.ccidnet.com/art/32857/20100420/2039495_1.html
      

  3.   

    设计一个权限表UserID,MENUID,是否可用
    1,11,0
    2,11,1
    ...在进入主程序时,,,循环这个表,,决定菜单是否被禁用。
      

  4.   

    我的方法:
    1、设计一表,用户名、注册名、密码、T1、.....Tn、N1、 ...、Nn。
    2、T1、.....Tn,对应对某表的浏览、读写权。
    3、N1、 ...、Nn,对应菜单项。
    4、在MainFrm打开时,读取数据,相应设置菜单和权限。
      

  5.   

    userid和menuid的方法就很好……
      

  6.   

    1.XML文件配置模块,不同类角色加载不同模块,这样做的好处是一个客户端解决不同的角色
    2.树形结构勾选解决一类角色中,不同的操作权限(配置文件相同),这样做的好处,一个部门中的业务关联可以区分到不同的用户。可惜这里无法发图:)
      

  7.   

    你想控制到菜单一级(也就是窗口),还是控制到窗口上的控件(Tedit,Tbutton之类的)。要是控制菜单,这些资料一搜一大堆。要是控制到窗口上的控件(或者控制任务流,估计你用不到),到时候我再说,
    现在告诉你,到时候用不到,我就瞎忙活了不是,
    这类资料少,有的话也是付费的论文之类的,我做过一个管理到窗体控件一级权限管理模型,不知对你有没有帮助,具体就看你的需求了。到时候再说。
      

  8.   

    主题:权限管理
        
    【功能说明】管理用户及用户的权限。
       
      权限分为操作权限与数据权限.
      操作权限共有128个权限, 其中前八个为系统定义的权限(预览、新增、编辑、删除、打印、
      导出、 执行、 作废), 其余为各模块的扩展权限, 例如员工档案还需要对身份证
      家庭地址等再作控制,这些为特定模块才有的权限称为扩展权限,例如员工档案
      还需控制身份证号、家庭地址等扩展权限,也可以由用户自定义。
      数据权限定义为用户管理的数据范围权限,分为人事、考勤、薪资, 供应商,客户,物料等几个大类。
    【权限流程】
      1. 创建角色,角色是对具有同一类职能的人构成的虚拟组织, 一般是根据职位来设定的。
      例如所有的考勤文员的操作权限是一样的,就可以定义一个考勤文员角色,
      并对它进行授权。那么有新的考勤文员(A)进来,就授予考勤文员角色即可。
      而不需要对(A)进行单独的模块授权,方便权限管理。  2. 创建用户,用户是实际操作系统的人,必须创建用户才能操作主程序,系统管理员不可以登录主程序.
        
      3. 用户授权,授权用户可以操作的权限及数据范围权限。
      1. 用户操作权限来源,用户权限=(本身权限 + 角色权限 )
      (1)继承于角色的权限,可以来源一个或者以上的角色权限,例如,用户A可以继承考勤文员
      和薪资文员权限。另外用户可以不继承角色权限。
      (2)来源于本身的权限,用户不但可以继承角色权限,还拥用本身的权限,本身权限优先级
      高于继承的角色权限,例如用户A继承的考勤文员角色没有<删除>权限,但用户本身具
      有<删除>R权限, 则用户A具有<删除>权限, 另外用户A继承的考勤文员角色具有
      <删除>权限, 但特别指定用户本身没有<删除>R权限, 则用户A没有<删除>权限,在
      没有特别指定的情况下,用户会继承角色的<删除>权限  2. 用户数据权限来源, 因为角色不具体数据范围权限,因此必须为每个用户分配数据范围权
      限。
      4.谁来授权, 哪些帐号可以给用户授权
      (1) 系统管理员 帐号为admin, 默认密码不空.  (2) 帐套管理员, 由系统管理员创建由帐套时指定的特定帐号, 在其管理的帐套内与系统管理员同
      等权限  (3) 拥有授权的用户, 这个最难理解,授权并不定要系统管理员来授权,在大的企业,存在多家子
      公司的情况下,系统管理员并不清楚子公司的权限划分,且子公司修改每次都来找系统管理员
      也非常麻烦, 因此系统管理员可以把授权的权限分配给特定的用户,让该用户直接授权即可。
      例如: X公司有X1,X2,X3三家子公司 那么系统管理员可以分为授予X1, X2, X3三家子公司
      的用户(u1,u2,us)的权限,并指定他们可以授权给其他用户,这样X1公司的其他用户
      就全完可以由u1来指定权限,指定的权限肯定不会超过u1的权限, 且u1仍然可以把
      授权的权限授予下属用户。
        
        
      5.系统控制权限流程  (1). 检查系统控制参数(默认控制权限的), 如不控制则全部权限,否则进入下一步,
      参数控制请点击主菜单.权限管理 -> 权限参数
        
      (2) 检查子系统控制参数是作权限控制,如不控制则拥用子系统全部权限, 否则进入下一步
      子系统参数控制点击 主菜单.系统管理 -> 系统参数
          (3). 检查用户是否拥用全部权限,如有则全部权限,否则进入下一步
        
      (4). 获取用户本身权限
        
      (5). 获取继承角色权限   
      

  9.   

    权限系统的常用表格
    1. 用户表(用户ID, 用户名称, 用户帐号...)2. 角色表(角色ID, 角色名称,...) 具有同一类职能的人构成的虚拟组织, 一般是根据职位来设定的
      可以预先定义一个系统常用的角色(只读角色, 审核角色, 文员角色)3. 模块表(模块Id, 模块编号,模块名称...), 表示整个系统有多少模块.4. 模块权限表(模块ID, 权限序号, 权限名称....), 表示每个模块具有哪些权限, 分为三大部分权限
      1.(包括新增,删除,编辑,打印,共性的权限.
      2.还要包括每个模块特定的权限(金额, 单价之类), 又称字段权限.
      3. 未考虑到的用户需求特定权限,   5. 角色权限表(角色ID, 模块ID, 权限序号, 读权限, 写权限...) 控制每个角色能控制哪些模块的哪些   
      权限,及字段权限读写权限, 有些只读,不能写.6. 用户权限表(角色ID, 模块ID, 权限序号, 读权限, 写权限...) 控制每个用户能控制哪些模块的哪些   
      权限,及字段权限读写权限, 有些只读,不能写.7. 用户角色表(用户ID, 角色ID) 表示用户拥用什么角色, 可以多个角色以上权限还只能控制操作权限, 能进行哪些操作, 还有一项数据范围权限
    用来控制对哪些数据操作, 例如华南分公司的用户只能操作华南公分司的数据,   
    数据范围一般按制的对象来分类,分等级来控制, 例如华南分公司高层数据,8. 数据范围对象表(控制对象ID, 对象名称, 控制方法)9. 数据范围分类表(控制对象ID, 分类ID, 关联的对象(部门, 客户,供应商, 物料等)).10, 数据范围等级表(控制对象ID, 等级ID, 关联的对象等级表(员工等级, 客户等级...)))11, 用户数据范围控制总表(用户ID, 控制对象ID, 拥用全部, 全部分类, 全部等级...)12, 用户数据范围控制对象明细表(用户ID, 控制对象ID, 分类ID, 读权限, 写权限...)   
      (用户ID, 控制对象ID, 等级ID, 读权限, 写权限...)13. 用户数据范围模块控制对象明细表(用户ID, 控制对象ID, 模块ID, 分类ID, 读权限, 写权限...)   
      (用户ID, 控制对象ID, 模块ID, 等级ID, 读权限, 写权限...)
      此表很少用到,用来控制每个模块的范围权限.
      

  10.   

    权限系统的常用表格
    1. 用户表(用户ID, 用户名称, 用户帐号...)2. 角色表(角色ID, 角色名称,...) 具有同一类职能的人构成的虚拟组织, 一般是根据职位来设定的
      可以预先定义一个系统常用的角色(只读角色, 审核角色, 文员角色)3. 模块表(模块Id, 模块编号,模块名称...), 表示整个系统有多少模块.4. 模块权限表(模块ID, 权限序号, 权限名称....), 表示每个模块具有哪些权限, 分为三大部分权限
      1.(包括新增,删除,编辑,打印,共性的权限.
      2.还要包括每个模块特定的权限(金额, 单价之类), 又称字段权限.
      3. 未考虑到的用户需求特定权限,   5. 角色权限表(角色ID, 模块ID, 权限序号, 读权限, 写权限...) 控制每个角色能控制哪些模块的哪些   
      权限,及字段权限读写权限, 有些只读,不能写.6. 用户权限表(角色ID, 模块ID, 权限序号, 读权限, 写权限...) 控制每个用户能控制哪些模块的哪些   
      权限,及字段权限读写权限, 有些只读,不能写.7. 用户角色表(用户ID, 角色ID) 表示用户拥用什么角色, 可以多个角色以上权限还只能控制操作权限, 能进行哪些操作, 还有一项数据范围权限
    用来控制对哪些数据操作, 例如华南分公司的用户只能操作华南公分司的数据,   
    数据范围一般按制的对象来分类,分等级来控制, 例如华南分公司高层数据,8. 数据范围对象表(控制对象ID, 对象名称, 控制方法)9. 数据范围分类表(控制对象ID, 分类ID, 关联的对象(部门, 客户,供应商, 物料等)).10, 数据范围等级表(控制对象ID, 等级ID, 关联的对象等级表(员工等级, 客户等级...)))11, 用户数据范围控制总表(用户ID, 控制对象ID, 拥用全部, 全部分类, 全部等级...)12, 用户数据范围控制对象明细表(用户ID, 控制对象ID, 分类ID, 读权限, 写权限...)   
      (用户ID, 控制对象ID, 等级ID, 读权限, 写权限...)13. 用户数据范围模块控制对象明细表(用户ID, 控制对象ID, 模块ID, 分类ID, 读权限, 写权限...)   
      (用户ID, 控制对象ID, 模块ID, 等级ID, 读权限, 写权限...)
      此表很少用到,用来控制每个模块的范围权限.