日期:2014-05-18  浏览次数:20453 次

权限分级的问题,请高手指点


如图,要实现以下功能:U1可以查看所以人的信息,U2只能查看U5,U6,U7的(也就是他自己创建的)。其他U3,U4类推。
如果U5又创建了几个用户,那么U2还能看到U5创建的用户信息,但不能看到U3,U4创建的用户。
请问高手如果解决?可以说说你们的想法,比如怎么建表之类的。分级最好能动态的实现。

------解决方案--------------------
递归一棵树,树的建立条件以他自己为根节点建立即可

可在登录时把登录用户的单位编号写入session

递归树的函数需要参数为(他本身的编号,他父一级的编号)
{
select * from table where parentid='父一级编号' and id='他本身编号'
递归代码绑定单位树
}
------解决方案--------------------
在数据库用户信息表加级别标识字段不可以吗?如SQ2000: Authority_Logo Varchar (50) not null,
U1: 录入aa
U2: 录入aabb, U3:录入aacc
U5: 录入aabbee ..........
类推,查看时再根据该字段屏蔽其他不可见用户
------解决方案--------------------
可以通过三种方式实现
1 依据父子关联的原理设计数据表 每一用户都可创建新用户 被创建的新用户的父ID即为创建它的用户ID(当然 顶层用户只有一个 它的父ID是默认值或自定义的值 为不造成混乱可约定其为<=0的任意值) 这样可以通过通过一个简单的递归算法就能判断一个用户(设ID为66)是不是另一个用户(设ID为8)的直接子用户或间接子用户
表结构示例如下
SQL code
create table userInfo
{
    id int        identity(1,1),
    parentId    int default(0),
    userName    varchar(50) not null,
    addTime        datetime deafult(getdate())
    --    其它字段
}