我有个小软件,C/S版的,软件菜单有几个,有几种用户,不同用户权限不同。现在我想通过在数据库中设计一个菜单权限表来控制权限,。
这个菜单权限表应该是比较容易理解的,网络传送的数据量尽量少的,易于扩展和修改的。
比如:
菜单有3个:人员管理、薪酬管理、报表管理
每个菜单进去都有增加、删除、修改、导入、导出等按钮。
之前有想过这种:user|power = name|YYYYYYYNNNNNNYYYYY,但是不易于扩展,也难理解

解决方案 »

  1.   

    三个表
    用户信息表UserInfor,存储UserId,UserName,PassWord.....
    用户权限表 UserRole  存储UserId ,RoleID,RoleDsc
    菜单表  MenuInfor 采用父子维度 构造多级菜单 存储
     MenueID  ParentID   MenuName RoleID  url  用户变化是时在UserInfor和UserRol  
    访问菜单权限在UserRole 和MenuInfor 
    菜单变化在MenuInfor 
      

  2.   

    每个表都是主要字段。利用SQL语句即可实现菜单的权限访问
      

  3.   

    对UserRole表中的RoleID与Menuinfor中的RoleID不大理解
    我想到的是:
    在MenueInfor表中,一条记录就是一个控件元素的权限
    假如某按钮有5个role可以使用,那么就会产生5条roleID不一样的记录。
    大概是想到这里,不知道对不对
      

  4.   

    有点错误,修改下:
    三个表 
    用户信息表UserInfor,存储UserId,UserName,PassWord..... 
    用户权限表 UserRole  存储UserId ,RoleID,MenueID  RoleDsc 
    菜单表  MenuInfor 采用父子维度 构造多级菜单 存储 
    MenueID  ParentID  MenuName url  
    用户变化是时在UserInfor和UserRol  
    访问菜单权限在UserRole 和MenuInfor 
    菜单变化在MenuInfor 
    为什么菜单一定要是一层呢 ? 多少层都无所谓啊  就是一个递归算法就可以了啊 
    roleID就两个值啊 0或者1 1表示可操作  0表示无权操作我想的是你控制的是页面的访问权限 url就是页面的地址 至于是按钮那你就把URL为null就是了
      MenueInfor表MenueID  ParentID  MenuName url  1            0       人员管理     人员管理.hml
    2            0       薪酬管理      薪酬管理.html

    4            1        增加
      

  5.   

    多加一层?
    先在菜单里面加上该层的信息,MenueID,ParentID。
    在UserRol表里加上用户对该层的权限  UserId MenueID  RoleID 就可以了吧
    高手门有更好的解决方法,请赐教哦
      

  6.   

    我做过一个
    给你参考下
     
    --用户等级表 
     create table User_Role
    (
      ID int identity(1,1) primary key,
      Title nvarchar(50), 
      Rank nvarchar(20)--  角色
    )
      栏目表 
    --Create Table User_Menu
    (
      ID int identity(1,1) primary key,
      Title nvarchar(50),--人员管理、薪酬管理、报表管理(都是这个里面的信息
      PageURL nvarchar(30),-- 对应的页面URL
      .
      .
    )
    --权限分配表
    Create table User_Purview
    (
      ID int identity(1,1) primary key,
      Rank int,--  用户等级ID
      MenuID int,--栏目ID,
      MenuValue int,--栏目对应的权限值2,4,8,16,64(在前台用)
      
    )
      

  7.   


    --给你个参考,我实际中的例子
    --1.用户信息表
    create table [ct_user]
    (userid, username,domain,department,create_time,create_name,update_time,update_name)
    --2.1.用户群组(权限)表
    create table [ct_user_profile]
    (userID, RoleID, LastLogintime,create_time,...)
    --2.2.特殊user权限表(有些user须特别处理)
    create table [ct_user_special]
    (userID, NodeID, create_time....)--3.群组表
    create table [ct_role]
    (RoleID,RoleName,Description,create_time...)
    --4.群组权限表
    create table [ct_role_profile]
    (RoleID,NodeID,create_time....)--5.节点表
    create table [ct_treeview_node]
    (NodeID,parent_id,node_name,is_folder,link,description,is_public,create_time...)