关于权限设计

bfqyvek 2007-01-06 05:02:17
各位仁兄,在权限设计方面大哥们一般是采用什么样的方式来做呢。
如一个员工。
他的权限介于董事长与总经理之间,也就是说他的权限可以看到总经理这个位置所能看到的项目,又可以看到董事长这个角色才能看到的中一些项目(但不是全部,只是选择一些)。

像这样,是不是采用一个角色表,一个员工表,在抽作时,把所有的权限都列出来,之后在对相应的员工打上想给予的权限呢。

在此请求大哥们多给指点,提出设计方法。

如果那位大哥有写过关于这方面的权限控制类,如果方便也希望能提拱一下给我参考。我不一定要源码,有相关说明就行,当然有源代码最好。

我的邮箱是:bfqyvek@163.com

十二分希望大哥们多指点小弟。必竞对权限方面我还是半桶水。



...全文
1207 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanhuacjn 2011-05-19
  • 打赏
  • 举报
回复
好贴 顶起
thanyang 2007-01-29
  • 打赏
  • 举报
回复
我现在也在做一个类似与这样的权限,头晕的很。
现在设置的权限一其有十多项:本用户、部分用户、本部门、部分部门、本角色、部分角色、本项目、部分项目、禁止、所有权限。哎,真是费劲啊
fireworksloveyou 2007-01-15
  • 打赏
  • 举报
回复
等答案 收藏起 ~
bfqyvek 2007-01-13
  • 打赏
  • 举报
回复
好的。非常感谢各位大哥的指导。

更希望各大哥再提供设计思想与方法。
newnan 2007-01-10
  • 打赏
  • 举报
回复
实现了比你还要复杂的权限控制,可以从角色、部门、用户三个层面的权限控制,并且权限可以继承管理。
潜水员2099 2007-01-10
  • 打赏
  • 举报
回复
看看:

http://topic.csdn.net/t/20040805/08/3243737.html
lindping 2007-01-09
  • 打赏
  • 举报
回复
基本是这么做的。
3个表 权限表,角色表,用户表
把所有权限罗列出来,然后定义若干角色,再把若干权限绑定到这些角色上面,然后每个用户都绑定一个角色。

我建议一个角色有多个权限,但是一个用户只能有一个角色,这样程序会简单些。如果将来碰到某用户既想拥有a角色的权限,又想拥有b角色的权限,那么添加一个新角色,给予a和b所属的权限给它,然后该用户绑定该角色就可以解决了。
Glen_qiu 2007-01-09
  • 打赏
  • 举报
回复
方法很多..要看你权限表是怎么设计的.
ychbzhl 2007-01-09
  • 打赏
  • 举报
回复
学习`
jxdyzwh 2007-01-09
  • 打赏
  • 举报
回复
把所有的权限都放在权限表里面,再建一部用户权限表,记录用户的ID和权限代码,在用户登录的时候就去用户权表判断,显示其应有的根限菜单!
gzxiaowj 2007-01-09
  • 打赏
  • 举报
回复
用户表
------------------------------
用户ID 用户角色 说明
------------------------------
1 1 张董
2 2 王总
3 3 赵秘
...

角色表
------------------------------
角色ID 角色名
------------------------------
1 董事长
2 总经理
3 董事长小秘
...

系统功能表
------------------------------
功能ID 功能说明
------------------------------
1 董事长的功能
2 总经理的功能
...

允可表
------------------------------
ID 角色ID 拥有功能ID
------------------------------
1 1 1
2 2 2
3 3 1
4 3 2
...


最后代码里根据允可表中记录来决定用户拥有的功能,可以看出,角色3拥有了1和2的功能。

hero4u 2007-01-08
  • 打赏
  • 举报
回复
呵呵,先弄清楚ntfs权限的设计了,这是最原子的么
完全控制 写 读 浏览 修改==
xp分为三类用户组么 administrator | power user | guest
还有一种是system权限组(最高级所有都是完全控制),隐藏boss只能在安全模式下见的到

把每种权限分成 5种么 “读、写、浏览、修改、完全控制”用一个字节的binary保存
就像是00011110 这样的一个权限,1表示有0表示无。
用户组的权限和 制定用户的权限 或操作 a|b 譬如guest用户权限00010100,被添加到了Administrator组(黑客经常这么做)00011111。那么最终guest用户权限为00011111即为完全控制了。

我只是提供一种思路,希望对你有所帮助了,至于数据库的设计么,尽量少的冗余即可了
rl2005 2007-01-08
  • 打赏
  • 举报
回复
很好,学习!
bfqyvek 2007-01-08
  • 打赏
  • 举报
回复
非常感谢以上大哥的指点。
让我有了进一步的思路。

luck0235 2007-01-07
  • 打赏
  • 举报
回复
常规做法吧:

用户表
------------------------------
用户ID 用户角色 说明
------------------------------
1 1 张董
2 2 王总
3 3 赵秘
...

角色表
------------------------------
角色ID 角色名
------------------------------
1 董事长
2 总经理
3 董事长小秘
...

系统功能表
------------------------------
功能ID 功能说明
------------------------------
1 董事长的功能
2 总经理的功能
...

允可表
------------------------------
ID 角色ID 拥有功能ID
------------------------------
1 1 1
2 2 2
3 3 1
4 3 2
...


最后代码里根据允可表中记录来决定用户拥有的功能,可以看出,角色3拥有了1和2的功能。
winner2050 2007-01-07
  • 打赏
  • 举报
回复
模范windows就可以了。
engmichael 2007-01-07
  • 打赏
  • 举报
回复
我都求过,但是没有结果
Triumph 2007-01-07
  • 打赏
  • 举报
回复
每个用户定义相同。
定义用户组,用户可以在一个或多个用户组内,也可以不在任何一个组内。
定义权限。如:查看,添加,修改,删除等。
定义用户或用户组在每个项目上的权限。

如:
用户A,用户B,用户C,用户D,用户E,用户F
用户B和用户C属于经理组,用户D和用户E属于员工组,用户F即属于员工组又属于经理组。

项目1的权限:
用户A有所有权限,经理组有查看、添加、修改的权限,员工组有查看权限。用户F因同属两个组,就高不就低,即拥有经理组的权限。

如再复杂些,可以象Windows一样,给每个权限加上允许和拒绝,拒绝高于允许。也说是说,如果某一项目的权限是经理组允许而员工组拒绝,则用户F的权限就是拒绝。

程序在检查权限时的流程是:当某用户访问某项目时,比如是查看操作,先检查该用户是否有查看权限,有三种情况:
1.允许。这时再遍历其所在的用户组,如果有拒绝存在,则该用户的最终权限是拒绝。
2.拒绝。这时不用再查其它的权限了,直接就是拒绝。
3.未设置。也就是即不允许也不拒绝。这时再遍历其所在的用户组,如遇到允许权限时记录,如遍历结束后未遇到拒绝权限,则该用户最终权限为允许,如遇到拒绝权限,则终止遍历,最终权限为拒绝。如遍历过程中都是未设置,则表示没有为该用户定义任何的权限,那么该用户的最终权限也应是拒绝。

这样的好处是可以组合出各种的权限。
mincunbao 2007-01-07
  • 打赏
  • 举报
回复
我是这样做的,用户表、权限表、角色表、用户角色表、角色权限表
virusswb 2007-01-07
  • 打赏
  • 举报
回复
用户表
权限表
角色表
让部门经理去创建角色,部门经理去给角色分配权限,管理员把用户定位到角色上去
加载更多回复(8)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧