关于系统中权限和角色设计的问题

来源:互联网 发布:mac怎么升级系统 编辑:程序博客网 时间:2024/05/21 11:01

 

 

关于系统中权限和角色设计的问题

 

 

引子:权限设计一直都是WEB开发中的核心、重点、难点。根据角色显示系统菜单更是难上加难。本文针对这两点,结合成功案例和作者自己总结,希望对大家有所帮助。 

 

系统中要求有赋予角色和赋予权限,现在系统想对某个用户的权限增加,并且增加的权限是大于用户的角色的,让该用户进去既能显示当前角色有的菜单也能看到新增的权限菜单,相关数据库表设计如下:

权限设计最少有 6 张表:

1,用户表 保存系统用户信息,如张三、李四,字段可以有id、name、fullname、email、phone、……
2,角色表 保存角色信息,如学生、管理员,字段有id、name、……
3,权限表 保存系统的权限信息,可定义系统哪些模块公开,或者什么时段可访问
4,用户角色表 关联用户和角色的关系表,如张三-学生,李四-管理员,字段有id、用户id、角色id,根据用户就知道所属的角色
5,角色权限表 关联角色和权限的关系表
6,用户权限表

一般来说第六张表用不到,但是你的需求会用到这张表。 查询每个用户拥有什么权限,得做两件事:1,从对应的用户中找出所有的角色;2,从对应的角色中找出所有的权限。然后将这些权限进行滤重就是该用户所拥有的权限。

对于超级管理员来说,只要设定一个 sys_admins 的角色就可以了,并不需要在角色权限中添加对应关系。

由于 sys_admins 拥有所有的权限,因此也没必要画蛇添足去添加这个角色的权限对应关系了。对于这个角色做特殊处理, 比如说先检查角色,如果角色中含有 sys_admins 就直接返回 true,以示拥有所有权限。

 

 

以下为针对角色菜单相关设计:

设置用户为多角色,各种角色权限综合为用户权限
数据库为角色表,用户表,菜单模块表,角色模块表

 

还可以直接给用户赋权限(不用通过给角色赋权限,然后给用户赋角色)

增加一个:用户权限表就可以啦。字段信息: 用户id,  权限id 。

这个非常简单。困难的是细粒度权限,也就是数据级权限。比如:
1 数据实例级别的访问控制。例如不同级别的审核员的审核不同金额的订单数据;
2 数据字段级别的访问控制。例如销售部所以员工都能查看客户信息,但只有该客户的客户经理才能够查看联系方式;


可以参考一下Metadmin产品,专门管理权限的。目前提供了试用版下载。地址是:www.metadmin.com

 

还有个《通用权限管理设计篇》,分析的也不错,有兴趣的朋友可以去看看,地址:http://sxiaomais.blog.163.com/blog/static/31741203200811102630406/

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 婆婆的娘家人从我家住怎么办 八个月宝宝断奶后不吃奶粉怎么办 吃母乳的宝宝不吸奶嘴怎么办 宝宝吸了奶嘴不吸母乳怎么办 婴儿吃了奶嘴不吸母乳怎么办 十一个月宝宝断奶不喝奶粉怎么办 孩子三门成绩全不及格家长该怎么办 宝宝快十个月了还不会爬怎么办 小孩写字老把手向里扭曲怎么办 孩子该上四年级了数学差的很怎么办 孩子上三年级了数学成绩好差怎么办 三年级数学老考70-80分怎么办 叛逆期的孩子用死来威胁家长怎么办 叛逆期的孩子抽烟喝酒家长该怎么办 大学遇到不好的老师加课怎么办 两岁的宝宝脾气古怪不听话怎么办 16个月宝宝不听话脾气大怎么办 如果你很害怕去面对一件事怎么办 孩子上幼儿园哭老师不理孩子怎么办 发现幼儿园给孩子吃药片该怎么办 做老师的打学生被家长投诉怎么办 学生认为老师向家长打报告怎么办 老师发打12分的试卷给家长怎么办 孩子在学校顶撞老师不让上学怎么办 被老师骂了不敢去学校怎么办 孩子不爱去幼儿园 总是哭怎么办呢 孩子在幼儿园被老师罚家长该怎么办 孩子不喜欢幼儿园里的体能课怎么办 初中叛逆期的孩子怎么办老师做法 二年级孩子不受老师待见怎么办 孩子该上初中了没学籍怎么办 四个多月的婴儿不喜欢看人怎么办 2个月婴儿不喜欢吃奶粉怎么办 想学习但是又学不进去怎么办 在省外读书 回来读高中学籍怎么办 一岁宝宝这几天不爱吃饭怎么办 2岁的宝宝吃多了怎么办 小孩吃了退烧药吐了怎么办 牙齿与牙齿之间有洞喜欢塞牙怎么办 胃有点烧心天天没食欲不饿怎么办 1岁半宝宝不吃饭光喝奶粉怎么办