用过权限设计的高手们,请指教下小弟

wangming402407250 2010-07-21 12:33:16
1.权限设计里面是不是只有用户,权限,和角色,所有使用系统的都是用户只不过角色不一样。那么数据库表中还分为管理员、用户,这是不是有点多余?


2.假设我现在有三类用户之间有从属关系id为自增字段,A(id,...),B(id,...),C(id,...)。C从属B(引用B的主键做外键),B从属A。我有个角色用户关系表(userID,roleID)那这张表中还需要有个字段辨别是哪个表的用户??


3.就是我如何细化到增、删、改、查啊?如何在web中表现出来?是不是要我把所有页面的url地址存入到数据库中,然后通过角色不同进行加载啊?
...全文
658 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
DingZaL 2010-07-21
  • 打赏
  • 举报
回复
系统维护管理员是单独的
每个系统都有系统维护人员 即:系统管理员(最高权限,是单独存在的)在项目完成时操作频率比较较低
单独写在一张表里,如果与用户在一张表中会给编程人员带来负担 如修改 删除 都要注意.

以上 是个人意见
uinatlex 2010-07-21
  • 打赏
  • 举报
回复
1,3回答
权限设计

《用户表》包含:
“用户ID"----------------(int,自动增长起始值1),
“用户组”----------(int,初始值为你所定用户等级最低时的值,一般99,值1表示所有权限,0表示特殊权限)

《用户组》包含:
“用户ID”-------(int,默认值0,0表示不追踪特殊权限用户),
“用户组”-----(int,对当前表应用户ID值为0,作用于你预设的权限等级表述,除0以外不得重复),
“用户角色”-----(varchar,描述当前用户角色,权限等级为0时为特殊用户)
“规则1”------(bit,你自定的规则1),
“规则2”------(bit,你自定的规则2),
“规则3”------(bit,你自定的规则3),
“规则4”------(bit,你自定的规则4)

如你定义新用户组,则在用户组中INSERT如下,
“用户id”-----0
“用户组”----除0以外不得重复的自定数
“用户角色”----自定描述当前用户角色
“规则1~4”-----自定
你INSERT新用户即可选择你定义的几个基本用户组。

如你选择要特别定义用户权限则在“用户表”中INSERT用户时选择设定“用户组”值为0,表明特殊
然后在“用户组”表中INSERT
“用户id”-----你所定义特殊用户ID
“用户组”----0
“用户角色”----自定描述当前用户角色
“规则1~4”-----自定

在Global.asax中完成用户权限维护
whb147 2010-07-21
  • 打赏
  • 举报
回复
可以分组

再分角色
zengbingling 2010-07-21
  • 打赏
  • 举报
回复
给你一个思路:
数据库建两个表,一个用户表user一个权限表role.
user表里有个roleid和role关联。
role表设计:{id,type,items}
id最好是guid类型。
type表示是用户,角色还是权限。
items是下级集合,是角色id和权限id集合。
页面控制:
固定页面的增、删、改、查等权限id,比较用户关联的role集合是否包含此特定id.

像你这种情况只要用到权限一级就可以了。不要用用户和角色。
用到多级的最好是建立一个xml文档保存权限数据,比表好操作
kwpirate 2010-07-21
  • 打赏
  • 举报
回复
权限和角色中间还少一张中间关联表!!所以应该是4张表的,
设置用户的权限表,对应用户的每个权限
Id=1 Accp 系统管理员
Id=2 qq 用户
在数据库里添加一张标题权限表,权限表里设置好每个主模块的标题菜单,对应权限字段L1,L2等;再设置每个模块的标题菜单下面的子模块,对应权限字段L101,L201等等。后面添加每个模块对应的用户权限,
标题菜单 权限 对应用户权限 url
服务管理 L1 1 对应的url地址也在数据库里
服务新建 L101 1
客户管理 L2 2
客户新建 L201 2
用户管理 L3 1
后面用户登录时显示菜单,根据对应权限动态显示标题菜单,也可以进行判断显示,根据用户权限判断,权限为系统管理员是显示服务管理,服务新建和用户管理,为用户时显示客户管理,客户新建

sugercgq 2010-07-21
  • 打赏
  • 举报
回复
每个功能对应一个权限,功能怎么分自己定,使用此功能之前,先做权限判定.

表可以分为 功能,用户,角色,角色对应功能表,可以精确到事件按钮.
  • 打赏
  • 举报
回复
用户、角色、权限、用户角色、角色权限
  • 打赏
  • 举报
回复
用户、角色、权限、用户角色、用户权限
wuyq11 2010-07-21
  • 打赏
  • 举报
回复
用户角色不同,权限不同
如同管理者与工作人员
从属关系救是所属部门的关系
细粒度的权限管理
根据“业务逻辑”的独特权限需求,编码实现细粒度部分
用户组
角色组
权限分1可执行 2可读 3可写 等
-小蕾- 2010-07-21
  • 打赏
  • 举报
回复
用户表、用户角色关系表、角色表、角色权限关系表、权限表 一共5张。
第一,你所指的用户,管理员只是角色的叫法。不同的需求会定义有不同的角色。比如,有医生,主任,药师护士之类的,而有的又只分为管理员,会员,普通用户,游客。这些就是不同的角色。

第二,根据不同的角色赋予不同的权限的好处就是,统一管理,并且一个人还有可能身兼多种角色,比如张三他为医生,但同时也是主任,那么根据他的角色,他就有医生和主任这2个角色所拥有的权限。

用户表存储的是所有用户的信息,角色表是存储所有角色的信息,而用户角色关系表就是把用户和所对应的角色关联起来。。一般关联表就三个字段:主键,用户Id,角色Id
权限表是表示所有权限,也就是把一个个的可以做的事标识出来。
角色权限关系表就是 根据角色,赋予不同的权限,一般也是三个字段:主键,角色id,权限id
小忙儿 2010-07-21
  • 打赏
  • 举报
回复
补充,帐户的上下级关系,在帐户信息表中增加 上级ID 字段即可~
在数据表(单据记录、事件记录)记录表中同样设置 帐户ID 字段~
然后就可以实现 各个上级分别管理各自的下属,不捞过界,井水不犯河水~~~
kinglot 2010-07-21
  • 打赏
  • 举报
回复
1.权限设计里面是不是只有用户,权限,和角色,所有使用系统的都是用户只不过角色不一样。那么数据库表中还分为管理员、用户,这是不是有点多余?
re:不一定只有用户,权限,角色这么几个东西,要看用户需求来定义,比如有些企业1万人使用你开发的系统,他不可能去为每个用户配置一遍角色,这就会产生组的概念。一般做法是用户(1:N)对应角色,角色(1:N)对应权限。至于你说的分管理员和用户是否多余,我的理解是管理员这个用户应该不用配置角色,他就能访问所有页面以及所有按钮的使用,有别于一般用户。

2.假设我现在有三类用户之间有从属关系id为自增字段,A(id,...),B(id,...),C(id,...)。C从属B(引用B的主键做外键),B从属A。我有个角色用户关系表(userID,roleID)那这张表中还需要有个字段辨别是哪个表的用户??
re:你没有必要为不同类别的用户建立不同的表,在同一个表中加一个标识或者用户类别就可以了。你这么做添加了不必要的麻烦。

3.就是我如何细化到增、删、改、查啊?如何在web中表现出来?是不是要我把所有页面的url地址存入到数据库中,然后通过角色不同进行加载啊?
re:我曾接手过一个项目,就是如你说的这种做法,把原本一个界面就实现的新增删除修改,分成了3个不同的导航,这样做的确是可以解决问题,但是导航随着日后开发工作量慢慢多了起来,这样的做法就不可取了,用户操作起来也不方便,因为密密麻麻的导航他都弄不清楚谁是谁了。有很多种做法,说个规范的做法:
数据库设计:
1.用户表Sys_User(id,loginname,password,username,utype,delflag,discription)
2.模块表(包含导航模块以及非导航模块)Sys_Module(id,parentid(父级导航),name,url,navcode(导航对应页面标识名-类名),icon(导航图标),discription,deflag)
3.操作表Sys_Actor(id,buttonid(按钮ID),imageurl(按钮图标),name,functionname(对应事件名),discription)
例如:
1 btn_Add 1.ico 添加 Add() 添加记录
2 btn_Modi 2.ico 修改 Modi() 修改记录
3 btn_Del 3.ico 删除 Del() 删除记录
4 btn_Excel 4.ico 导出Excel ToExcel() 导出Excel
5 ……
8 NULL Null 查看个人记录 PersonalData() 查看个人记录
9 NULL Null 查看部门记录 DepartMentData() 查看部门记录
10 NULL NULL 查看下属记录 UnderData() 查看下属记录
11 ……
4.导航操作关联表Sys_NavigationActor(NavigationID,ActorID)
5.角色表Sys_Role(id,name,discription,delflag)
6.角色导航操作关联表(RoleID,NavigationActorID)
7.用户角色关联表(UserID,RoleID)
程序设计:
重写Page类,利用反射获取当前打开界面的类名,根据模块表中保存的类名以及当前登录用户ID判断此用户能用哪些按钮以及能查看哪些数据。
小忙儿 2010-07-21
  • 打赏
  • 举报
回复
1、帐户表:帐户信息
2、帐户组表:帐户组信息
3、帐户分组表:自动编号,帐户ID,帐户组ID
4、项目表:需要授权的功能、项目信息
5、授权明细表:...

项目授权分这几种:读,增,改,删,运行等等
项目授权情况有:禁止,容许,默认
项目授权方式有:按帐户授权,按帐户组授权

判断某个账户是否具有某种权限,应该这样来
1、帐户是否被明确禁止此种权限
2、帐户是否被授予此种权限
3、帐户所在的所有组是否具有此权限

所以 授权明细表 结构为:
1、自动编号
2、项目编号
3、授权方式(从这里区别是按组授权还是按帐户授权)
4、帐户/帐户组(帐户ID或者帐户组ID)
5、读(布尔值,TRUE代表容许)
6、增(布尔值,TRUE代表容许)
7、改(布尔值,TRUE代表容许)
8、删(布尔值,TRUE代表容许)
9、运行(布尔值,TRUE代表容许)
10、其他字段

胡言乱语,仅供参考....

62,050

社区成员

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

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

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

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