- 浏览: 885620 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (354)
- Java学习 (122)
- jstl el表达式 (2)
- struts2 标签 (6)
- Ibatis (14)
- S2SH (3)
- struts2 json (2)
- JDK1.6-JDK1.5 (1)
- spring mvc (1)
- 工作项目开发 (8)
- jxl (3)
- jqgrid (9)
- POI (10)
- jQuery (9)
- itext (11)
- oracle (56)
- js (20)
- treegrid (1)
- myeclipse (4)
- Jforum (1)
- iphone (2)
- 角色权限 (1)
- Log4J (5)
- WebService (1)
- spring定时 (1)
- swfupload (12)
- Servlet (1)
- KindEditor (1)
- Java学习,httpclient (2)
- http (4)
- datagrid (1)
- KinSlideshow (1)
- android (7)
- html (1)
- CSS (1)
- 正则表达式 (3)
- easyui (6)
- JSONP (1)
- SQLServer (1)
- tomcat (2)
- Spring (4)
- Jquery plugins (2)
- windows7 (3)
- bootstrap (1)
- FreeMarker (1)
- flex (1)
- ExtJS (6)
- tTP-Link (1)
- MySQL (4)
- JavaScript (3)
- Notepad++ (1)
- ora (1)
- C语言 (1)
- 计算机 (1)
- DWR (2)
- 吉他 (1)
- hibernate (1)
- eclipse (1)
最新评论
-
天使建站:
这里的这篇文章写得很好:http://www.aijquery ...
jS 如何删除二维数组的重复项 -
羽翼的心动:
POI处理的格式单一,无法导出格式比较复杂的表格。POI不能使 ...
poi合并单元格同时导出excel -
zhixinhuacom:
jqgrid 按回车键默认提交数据,怎么做才能时回车不提交数据 ...
JQgrid要实现在jqGrid表格上动态的加行、删行,最后点击“保存”按钮,与后台交互,保存数据 -
w_mojian180:
nice 很多情况都是因为引入文件导入
Uncaught SyntaxError: Unexpected token < -
springdata_springmvc:
bootstrap demo实例教程源代码下载:http:// ...
bootstrap-switch开关按钮表单插件
用户管理权限设计一直是大家讨论的热点,因为几乎涉及到每一个开发的业务系统。我找了很多很多的资料,大家的核心基本上都是一样的:基于角色管理. 用户,角色,模块,权限的相互组合,就可以形成一个强大的权限管理系统。
最近在一个项目中设计的一个用户权限的设计,很乐意与大家一起讨论及分享.
设计思路
我的设计思路或者说是我想要实现的功能
1.用户的权限通过角色来控制,一个用户可以拥有多个角色.
2.用户拥有不同角色时,其权限应该是多个角色相互的补集.
3.一个角色拥有多个模块
4.用户的前台菜单显示根据角色所拥有的模块所决定,不同的用户在前端显示的操作菜单是不一样的。
5.页面中的功能按钮根据模块中所包含的功能所定义,通过模块及角色所拥有的权限进行控制
6.可看某个模块有哪些用户,哪些对应角色,并对其进行特殊权限设置.
7.可以针对单个用户进行特殊设置
我在我的Project中,基本上达到了以上的效果及功能,但在实际过程中发现有些不足之处。因为整个权限设计是基于数据库来设计中,所以数据的读取当数据量大时(我所说的数据量是以万以上来计)可能对性能有一定的影响。但对于一般来说,几千用户之类的我想还是可以承受的。我会在后面说明不足之处。
数据库设计
基本设计:
1.首先,设计数据库.
数据库的设计其实我估计大家都很熟悉了
基本表:用户表,角色表,模块表,功能表,管理员表.如果涉及到企业性质的,可能会根据需要加上组织结构表,群组表等其它辅助表
用户
管理员
角色
模块
(我的模块表考虑了子模块的因素,所以会有深度,父模块ID这两个字段,在后来开发过中,由于思路的转变,IsRootModule,FunctionCode我都没有用到,为了让整个权限系统通变得更通用,我都将其单独设计成了另一个表)
功能表(功能表就是模块对应的功能:增加,删除,修改,详细,列表,浏览,导出,导入之类的)
业务表:用户-角色表 模块-功能表 角色-模块表
要实现一个用户多个角色(1 to n),一个角色多个模块(1 to n),一个模块多个功能(1 to n),那就得加上几个相关的业务表,之前考虑用视图去实现,我个人之见,视图最好只用来读取数据,不要用来进行数据操作.后来证明是不可取的,这里要注意的就是在实际的业务操作中,应该尽量避免重复的数据录入. 这些表都很简单,但却很关键
用户-角色:
角色-模块:
模块-功能:
大家可以看到,表结构很简单,字段也很少,设计也差不多。都是将相关联的字段ID取出来做数据存取。
视图:用户-角色-模块-功能视图
可能大家会觉得很奇怪,为什么这里出现member_role呢。因为我们在数据表中只存取了ID值,而对应的RoleName字段并没有包含其中,这里的视图就是获取关联表中其他所需要的字段数据了。另外两个视图大家看名字应该就知道他的用处了。
存储过程:各自表的增加,删除,修改,及列表数据. 判断是否存在相同的数据
(CUDLIS-Create,
Update,Delete,IfExist,Show,List)
存储过程我就不一一列出了,很简单的,你只要写出下面这些基本上你在开发过程就不会有太多问题了. 注意的是:在相互关联的业务表中,最好能对数据插入进行重复数据判断(用户角色表,模块功能表,角色模块表,尽量避免重复的数据插入)我把大致需要实现的业务列个表给大家参考:
用户表:(Insert ,Update ,IfExist ,Show, Delete)
用户角色表:(Insert ,Update,IfExist,Delete,RoleListByUserID,UserListByRoleID)
角色表:(Insert,Update,IfExist,Show,Delete)
角色模块表:(Insert,IfExist,Delete,Show,RoleListByModuleID,ModulistByRoleID)
模块表:(Insert,Update,IfExist,Show,Dlete,ListByRootModuleID,ListByModuleLevel)
模块功能表:(Insert,Update,Delete,FunctionListByModuleID)
针对用户直接获取其所有的权限时,应该有个单独的Procedure从视图中Member_Role_Module_Function中获取其对应的数据,这样就可以得到想要的东西了。
数据库设计部分应该就这样差不多了。我想这应该是通用的。在实际运用过程中,我个人认为应该有一些改进点:
1.模块与功能部分,可以用字符串的形式将模块对应的功能存在一个数据字段中,这样可能在你的代码编写中可以省下较多的时间并带来更多的便利(主要是可以用split()来代替频繁的数据获取业务)这个我在最初设计中没有想到这点,有点失策.
2.针对N级模块的权限展现问题,如何让父模块继承子模块的权限这个是我没有考虑到的,不过我想应该可以用IsRootModule这个字段来作文章,可惜我还没想到如何去整这个字段。当子模块很多时,在前端UI展示的时候是否会出现很慢的情况?这个我没有去做测试,带有一定的风险。
但在前端UI展示我还没想到或实现好的办法,我能想到的应该是像GridViewTree那种不错。
这个权限设计已经在我的Project中运用,暂时没有发现什么问题,而且为我以后对其它系统集成也很有帮助。至于如何在C#中实现业务,个人认为只要知道数据库如何整的,那C#中的业务实现只是一个取数操作过程。
发表评论
-
Java中List Set Map 是否有序等总结
2015-05-05 11:09 667转http://blog.csdn.net/zhengqiq ... -
ava操作word宏
2015-04-29 10:44 476转:http://aa8945163.iteye.com/b ... -
System.load 和 System.loadLibrary详解
2015-04-09 10:50 572转:http://www.cnblogs.com/h ... -
(转)谈谈对Java中Unicode、编码的理解
2015-03-03 11:07 384转:http://www.cnblogs.com/newst ... -
HTTP status code 说明
2015-01-15 16:15 449200 – 服务器成功返回 ... -
JAVA邮件发送
2015-01-13 16:56 592转:http://www.cnblogs.com/codep ... -
Java排序算法 记录
2015-01-13 10:24 386转:http://www.cnblogs.com/dians ... -
java中volatile关键字
2015-01-05 14:30 454转:http://www.cnblogs.com/aigon ... -
4.1 Servlet简介
2014-12-22 16:34 392转:http://www.blogjava.net/ ... -
在 Windows 中实现 Java 本地方法
2014-12-21 15:18 422转:http://www.ibm.com/devel ... -
严重: Error listenerStart
2014-11-18 17:14 3872007-5-31 14:27:13 org.apache. ... -
java.security.AccessControlException: access denied 的解决方法
2014-11-07 22:07 3291转:http://blog.csdn.net/maomao ... -
Linux下反斜杠号"\"
2014-10-27 13:36 2435转:http://www.cnblogs.com/Muyou ... -
@override在JDK1.5和JDK1.6中用法区别
2014-10-14 22:54 360转:http://gaowenming.iteye.com/ ... -
ClientAbortException:java.io.IOException解决方案
2014-09-09 10:13 12463转:http://blog.sina.com.cn/s/bl ... -
SchedulerFactoryBean 注入
2014-08-26 10:19 779转:http://blog.csdn.net/neutro ... -
Spring 3整合Quartz 2实现定时任务二:动态添加任务
2014-08-26 09:47 789转:http://www.meiriyouke.net/?p ... -
Spring 3整合Quartz 2实现定时任务一:常规整合
2014-08-26 09:45 620转:http://www.meiriyouke.net/?p ... -
Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
2014-08-26 09:21 2196转http://my.oschina.net/u/1177 ... -
java.lang.UnsupportedClassVersionError: Bad version number in .class file
2014-08-18 16:45 345今天新建了一个基于jdk6的工程,在tomcat中部署之后, ...
相关推荐
用户权限管理系统,是PPT,可以了解用户权限管理系统的设计。仅供学习。
用户认证管理权限设计方案
用户权限管理.用户权限管理.用户权限管理.用户权限管理.
用户权限管理用户权限管理用户权限管理用户权限管理
通用权限管理设计篇,设计说明,数据库说明
最详细的,结构合理的,易扩展的,用户权限管理模块设计教程。
该文档为通用权限设计方案,其中通过分析用户、组、角色、权限等四个对象之间的关系具体描述权限设计的大致思路。
实现业务系统中的用户权限管理--设计篇 实现业务系统中的用户权限管理--设计篇
为了设计一套具有较强可扩展性的用户认证管理,需要建立用户、角色和权限等数据库表,并且建立之间的关系
JAVA用户权限管理概要设计说明书-外发版
一个用户权限管理模块的设计思路,较详细介绍用户权限管理的设计思路
使用php+mysql+apache+qeephp,完成的用户权限管理系统,实现用户的访问权限控制,分组管理,权限设置,个人资料修改。
1.使用C++实现的权限管理模块 2.单例模式实现,方便集成 3.实现了root和普通用户区别,添加新用户,修改密码 4.用户名密码以加密文档形式存在本地文件
基于角色的权限管理数据库设计。内有建表语句及测试语句。
ASP.NET系统用户权限设计与实现 针对一切用户权限设置的操作与制作步骤
QT VS2017 权限管理用户管理,单独输入界面, 界面设计,用户信息保存到sqlite数据库中,查询输出等。
用户权限管理,是每个程序开发人员必须掌握的。这里我在网络上收集到文档,拿出来给大家分享下。
java系统权限管理设计,详细讲解了权限管理的设计和逻辑关系,以及表结构
主要是针对多用户系统权限的设计,提供简单的数据库表结构,浅显易懂,对于初学者有益。
用delphi写的用户权限管理 修改了权限树节点状态生成过程,采用循环遍历树结点 修改了主界面菜单和工具条显示过程,采用递规遍历菜单 通过系统管理员进入sys权限设置,在mainfrom创建的时候读取权限。 权限设置...