- 浏览: 52354 次
- 性别:
- 来自: 江蘇
-
文章分类
最新评论
-
lvf2002:
求完整源码,谢谢!chxue2016@126.com
一个简易实用的web权限管理模块的应用与实现 -
woxiqingxian:
感觉很不错啊!!求整个工程项目!!一起学习!谢谢……45504 ...
一个简易实用的web权限管理模块的应用与实现 -
12806474:
求整个项目的源码:oswin_jiang@163.com
一个简易实用的web权限管理模块的应用与实现 -
12806474:
求资源:oswin_jiang@163.com
一个简易实用的web权限管理模块的应用与实现 -
Anndys99:
大哥,可否把整个项目的源码发我一份,正在学习权限控制这一块.谢 ...
一个简易实用的web权限管理模块的应用与实现
本文介绍一个简易实用的web权限管理模块的应用与实现。
先介绍数据模型和应用界面,后继对实现细节做选择性阐述。
数据表关系如下:
该图标明了登陆用户、角色、部门(机构)、用户组、角色和模块功能之间的关系。为方便起见,所有表都只保留必要字段。
在本系统设计中,如下概念有着相对特殊的含义。
一、用户(user): 系统的使用者。
二、部门(org):体现了用户的行政关系,
三、组(group) :是某相同职能的用户的集合,可以和用户一样与角色产生关联。设置组的目的是为了方便用户的角色分配,减少用户与角色的直接对应关系。用户的角色可以是其组角色和其直接分配的角色之合集。限于作者的时间和精力,组功能在该系统中没有具体的实现。
四、角色(role):角色对应着某些功能(function)的集合,被分配一个角色意味着有权执行这些功能。角色表中的字段"functions"记录相关的功能id,id之间用逗号隔开。
五、功能(function):系统的一个或者多个执行准入。
那么如何表现“功能”以最终实现控制用户的每一个细微动作呢?假如不特定于某种架构,可以这么设计该表字段:
CREATE TABLE `m2_function` ( `FUNCTION_ID` int(10) unsigned NOT NULL AUTO_INCREMENT, `NAME` varchar(50) NOT NULL, `FUNC_TREE_ID` int(10) unsigned NOT NULL, `RESOURCE` varchar(100) NOT NULL, `SUFFIX` varchar(50) NOT NULL, `DESCRIPTION` varchar(100) NOT NULL, `PARAMS` varchar(45) NOT NULL, PRIMARY KEY (`FUNCTION_ID`) ) DEFAULT CHARSET=utf8;
假定有三个web访问路径
http://127.0.0.1:8080/app/sys/user.jsp?action=index&userid=1203
http://127.0.0.1:8080/app/sys/user.yuetong?action=add
http://127.0.0.1:8080/app/sys/user.yuetong?action=update&userid=1203
这三个访问点被人为的划分为两个功能准入(当然亦可以是一个或者三个),见下图
由此可知,“功能”是衡量用户准入的最小刻度。在用户访问某个地址的时候,我们可以通过解析URL对比他拥有的“功能”权限来实现权限管理。
借助于某些架构或者设计思路,可以避免用户直接访问JSP页面,甚至全系统的访问地址都使用同一后缀,这种情况下可以省去SUFFIX字段。 本系统就是这种情况(JSP页面置于WEB-INF下,采用struts2架构)。
六、功能模块树(function tree):功能的目录组织,起分类的作用。在为角色设定功能的时候,用户界面可以利用带选择框的js树。而这颗js树是后台的功能树表以及功能表的联合表现形式。功能模块树可以方便的与菜单树建立映射关系,限于作者的时间和精力,该系统并未实现菜单树。
下面从实际应用入手做直观的介绍:
用超级管理员帐号YT000登陆(该帐号拥有全部的权限,帐号信息应该预先写入数据库或者以配置文件方式放到类路径下):
首先是机构管理部分,这里可以编辑某个公司或者单位的组织结构:
然后进入用户管理部分,会有一个用户列表:
可以编辑用户的属性,设置其所属机构:
还可以为用户设定多个角色:
接着,再看看角色的列表:
可以为角色设定功能。该角色设定树的生成,在后继文章中会有介绍。
最后,在系统资源部分,可以进行功能模块树的编辑(和机构树的编辑一样)
点击编辑详细功能,可以为选中的结点设置具体功能:
配置妥当以后,当我们以一个普通用户登录,执行某个操作的时候,如果没有权限,系统会做出提示。关于用户的权限验证,后继会有介绍。
相关阐述请关注后继文章。
- m2soft.rar (107.5 KB)
- 下载次数: 8584
评论
恩。能不能来个完整的包下载就能用的啊。
你还在搞技术啊?
明天再细看
有代码提供,支持
<div class='quote_div'>
<div class='quote_title'>Augustan 写道</div>
<div class='quote_div'>
<p> </p>
<p> </p>
<p> 三、组(group) :是某相同职能的用户的集合,可以和用户一样与角色产生关联。设置组的目的是为了方便用户的角色分配,减少用户与角色的直接对应关系。用户的角色可以是其组角色和其直接分配的角色之合集。限于作者的时间和精力,组功能在该系统中没有具体的实现。</p>
<p><span style='color: #ff0000;'><strong>本意是为了简化,结果反倒引入了复杂,增加了工作流,需要理解的概念,可惜.</strong></span><br/> 四、角色(role):角色对应着某些功能(function)的集合,被分配一个角色意味着有权执行这些功能。角色表中的字段"functions"记录相关的功能id,id之间用逗号隔开。</p>
<p><strong><span style='color: #ff0000;'>作为权宜之计的实现勉强可以接受,这个暂时的妥协将带来日后许多隐患.</span></strong></p>
<p> 五、功能(function):系统的一个或者多个执行准入。</p>
<p> 那么如何表现“功能”以最终实现控制用户的每一个细微动作呢?假如不特定于某种架构,可以这么设计该表字段:</p>
<pre name='code' class='sql'>CREATE TABLE `m2_function` (
`FUNCTION_ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`NAME` varchar(50) NOT NULL,
`FUNC_TREE_ID` int(10) unsigned NOT NULL,
`RESOURCE` varchar(100) NOT NULL,
`SUFFIX` varchar(50) NOT NULL,
`DESCRIPTION` varchar(100) NOT NULL,
`PARAMS` varchar(45) NOT NULL,
PRIMARY KEY (`FUNCTION_ID`)
) DEFAULT CHARSET=utf8;
</pre>
<p> 假定有三个web访问路径 <br/> <a href='http://127.0.0.1:8080/app/sys/user.jsp?action=index&amp;userid=1203'>http://127.0.0.1:8080/app/sys/user.jsp?action=index&userid=1203</a> <br/> <a href='http://127.0.0.1:8080/app/sys/user.yuetong?action=add'>http://127.0.0.1:8080/app/sys/user.yuetong?action=add</a><br/> <a href='http://127.0.0.1:8080/app/sys/user.yuetong?action=update&amp;userid=1203'>http://127.0.0.1:8080/app/sys/user.yuetong?action=update&userid=1203</a><br/> 这三个访问点被人为的划分为两个功能准入(当然亦可以是一个或者三个),见下图 </p>
<p><img src='/upload/picture/pic/28251/e716dc99-599e-3c30-ae69-e6ab211db836.bmp ' height='89' alt='' width='588'/> </p>
<p> 由此可知,“功能”是衡量用户准入的最小刻度。在用户访问某个地址的时候,我们可以通过解析URL对比他拥有的“功能”权限来实现权限管理。</p>
<p> 借助于某些架构或者设计思路,可以避免用户直接访问JSP页面,甚至全系统的访问地址都使用同一后缀,这种情况下可以省去SUFFIX字段。 本系统就是这种情况(JSP页面置于WEB-INF下,采用struts2架构)。</p>
<p><strong><span style='color: #ff0000;'>由于目前control层的灵活,这样也是能接受的,控制得好</span></strong><strong><span style='color: #ff0000;'>仅仅是数据的冗余,</span></strong><strong><span style='color: #ff0000;'>不会造成太麻烦的后果</span></strong></p>
<p> 六、功能模块树(function tree):功能的目录组织,起分类的作用。在为角色设定功能的时候,用户界面可以利用带选择框的js树。而这颗js树是后台的功能树表以及功能表的联合表现形式。功能模块树可以方便的与菜单树建立映射关系,限于作者的时间和精力,该系统并未实现菜单树。</p>
<strong><span style='color: #ff0000;'>简单点说,功能是不应该有层级关系的.表面看到的并不意味着事实本质就是如此,不小心对待系统就会向失败演化.</span></strong>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</div>
<p>
</p><p><strong/></p>
<p/>
</div>
<p> <strong><span style='color: #ff0000;'>本意是为了简化,结果反倒引入了复杂,增加了工作流,需要理解的概念,可惜.</span></strong></p>
<p><span style='color: #ff0000;'><strong>-------这个有待商榷。</strong></span></p>
<p><strong><span style='color: #ff0000;'>
</span></strong></p><p><strong><strong><span style='color: #ff0000;'>作为权宜之计的实现勉强可以接受,这个暂时的妥协将带来日后许多隐患.</span></strong></strong></p><strong>
<p>------哪些隐患,能具体谈谈么?</p>
<p>简单点说,功能是不应该有层级关系的.</p>
<p>------您并没有看明白我的表结构。功能是没有层级关系的。</p>
<p> </p>
</strong><p/>
<div class='quote_div'>
<p> </p>
<p> </p>
<p> 三、组(group) :是某相同职能的用户的集合,可以和用户一样与角色产生关联。设置组的目的是为了方便用户的角色分配,减少用户与角色的直接对应关系。用户的角色可以是其组角色和其直接分配的角色之合集。限于作者的时间和精力,组功能在该系统中没有具体的实现。</p>
<p><span style='color: #ff0000;'><strong>本意是为了简化,结果反倒引入了复杂,增加了工作流,需要理解的概念,可惜.</strong></span><br/> 四、角色(role):角色对应着某些功能(function)的集合,被分配一个角色意味着有权执行这些功能。角色表中的字段"functions"记录相关的功能id,id之间用逗号隔开。</p>
<p><strong><span style='color: #ff0000;'>作为权宜之计的实现勉强可以接受,这个暂时的妥协将带来日后许多隐患.</span></strong></p>
<p> 五、功能(function):系统的一个或者多个执行准入。</p>
<p> 那么如何表现“功能”以最终实现控制用户的每一个细微动作呢?假如不特定于某种架构,可以这么设计该表字段:</p>
<pre name='code' class='sql'>CREATE TABLE `m2_function` (
`FUNCTION_ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`NAME` varchar(50) NOT NULL,
`FUNC_TREE_ID` int(10) unsigned NOT NULL,
`RESOURCE` varchar(100) NOT NULL,
`SUFFIX` varchar(50) NOT NULL,
`DESCRIPTION` varchar(100) NOT NULL,
`PARAMS` varchar(45) NOT NULL,
PRIMARY KEY (`FUNCTION_ID`)
) DEFAULT CHARSET=utf8;
</pre>
<p> 假定有三个web访问路径 <br/> <a href='http://127.0.0.1:8080/app/sys/user.jsp?action=index&amp;userid=1203'>http://127.0.0.1:8080/app/sys/user.jsp?action=index&userid=1203</a> <br/> <a href='http://127.0.0.1:8080/app/sys/user.yuetong?action=add'>http://127.0.0.1:8080/app/sys/user.yuetong?action=add</a><br/> <a href='http://127.0.0.1:8080/app/sys/user.yuetong?action=update&amp;userid=1203'>http://127.0.0.1:8080/app/sys/user.yuetong?action=update&userid=1203</a><br/> 这三个访问点被人为的划分为两个功能准入(当然亦可以是一个或者三个),见下图 </p>
<p><img src='/upload/picture/pic/28251/e716dc99-599e-3c30-ae69-e6ab211db836.bmp ' height='89' alt='' width='588'/> </p>
<p> 由此可知,“功能”是衡量用户准入的最小刻度。在用户访问某个地址的时候,我们可以通过解析URL对比他拥有的“功能”权限来实现权限管理。</p>
<p> 借助于某些架构或者设计思路,可以避免用户直接访问JSP页面,甚至全系统的访问地址都使用同一后缀,这种情况下可以省去SUFFIX字段。 本系统就是这种情况(JSP页面置于WEB-INF下,采用struts2架构)。</p>
<p><strong><span style='color: #ff0000;'>由于目前control层的灵活,这样也是能接受的,控制得好</span></strong><strong><span style='color: #ff0000;'>仅仅是数据的冗余,</span></strong><strong><span style='color: #ff0000;'>不会造成太麻烦的后果</span></strong></p>
<p> 六、功能模块树(function tree):功能的目录组织,起分类的作用。在为角色设定功能的时候,用户界面可以利用带选择框的js树。而这颗js树是后台的功能树表以及功能表的联合表现形式。功能模块树可以方便的与菜单树建立映射关系,限于作者的时间和精力,该系统并未实现菜单树。</p>
<strong><span style='color: #ff0000;'>简单点说,功能是不应该有层级关系的.表面看到的并不意味着事实本质就是如此,不小心对待系统就会向失败演化.</span></strong>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</div>
<p> </p>
角色跟功能权限的关系没有描述啊?
实体关系图里也没有,界面里也没提及?
有提及:
四、角色(role):角色对应着某些功能(function)的集合,被分配一个角色意味着有权执行这些功能。角色表中的字段"functions"记录相关的功能id,id之间用逗号隔开。
这种联系无法在图中用箭头直接表述出来。
图片中那棵带选择框的树,就是为某个角色分配相应的功能。
用逗号来保存关联,这种方式还是少用为好
如果要增加组,建议用户与组之间用多对多关系
如果部门的人员比较多,建议部门与组之间、部门与角色之间最好也要建立多对多关联
这样,用户的权限就是以下的并集:
用户-->角色-->功能
用户-->组-->角色-->功能
用户-->部门-->角色-->功能
用户-->部门-->组-->角色-->功能
这自找麻烦的设计也有实际做出来并应用的系统,真为开发这种系统的人感到同情,简单就是美,没听说过?
可以举一个例子来说,对于生产系统来说,“系统维护”功能是必须的,用来维护系统中最基础的数据,只能有系统管理员使用,一般来说,系统管理员也就是一个人或者两个人,系统维护中包括若干维护项目,一个人有了系统维护的功能,就可以维护所有基础数据,没有必要在进行区分,一个人可以维护这个数据,而另一个用来维护另外的数据。
所以我认为acegi一点不适用,特别是角色是由用户来维护的,根本不确定,如何能够在程序中写死。
我一直期待业界把超权限的管理员这个概念给消灭,可是失望了
目前并没有具体实现group的概念。 用户的role可以认为是user-->group-->role以及user-->role的并集。它们是分开设置的,并不互相影响。
有进步,已经接近事物的本质了,再简单点就是完美.
一、管理内容
1.界面
2.url
3.service
4.data
二、管理实体
1、user
2、role
3、权限
4、voter manager
三、管理方法
1、aop方法
最后忘了说了,spring security也就是acegi完全能实现。不过的确要改很多东西。acegi的颗粒度非常的低。但低的容易集成呀。好东西只有深入研究了才叫好。
Last I really appreciate that you can share the experiences.


目前并没有具体实现group的概念。 用户的role可以认为是user-->group-->role以及user-->role的并集。它们是分开设置的,并不互相影响。
发表评论
-
一个乱码的问题
2011-07-26 00:14 1365今天上班,升级脚本时候报错,网管服务端显示出错的sql有乱码。 ... -
一个简易实用的web权限管理模块的应用与实现
2008-12-24 12:58 9447本文介绍一个简易实用的web权限管理模块的应用与实现。 ... -
JSF大数据量查询分页控件源代码
2008-12-18 13:28 2483之前发过一篇JSF分页控件的文章,陆续有人向我索要 ... -
一个ajax自动完成的例子
2008-06-12 14:27 3457在项目当中, ... -
一个excel导入的工具类
2008-04-02 10:51 1216现在的用户动不动就要求excel导入,一条条输都嫌麻烦。 不得 ... -
JFreeChart 实现趋势图(数据库端表示成交叉表)
2008-03-27 14:44 914前段时间有做趋势图的报表需求。图形生成的重点在于dataset ... -
改写JSF 分页控件使其能支持大容量数据分页以及查询分页
2008-03-27 13:44 5880上一篇对分页的分页的封装是基于struts框架。如果要利用J ... -
新sales中的查询分页
2007-11-07 16:21 1842之前有过一篇关于分页的介绍, ...
相关推荐
本文将深入探讨一个简易的Web无线点餐后台管理系统的设计与实现,包括其核心功能模块:餐桌管理、菜系管理、菜品管理和用户管理。 一、餐桌管理 餐桌管理是后台系统的基础,它涉及到对餐厅内所有餐桌信息的维护。在...
这篇文章详细介绍了如何使用AngularJS构建一个简易型的权限管理系统。我们将通过多个知识点来展开讨论这一主题。 首先,要了解什么是权限管理系统,它是指在软件系统中用于管理用户权限、角色、权限分配等功能的...
"简易个人WEB服务器"软件解决了这个问题,它提供了一种简单易用的方式,让普通用户也能轻松创建并管理自己的Web服务器,从而实现资源的共享。 Web服务器是一种运行在计算机上,能够响应HTTP(超文本传输协议)请求...
在本项目中,"java开发简易人员管理系统" 是一个基于J2EE技术栈构建的应用,主要目的是实现对人员信息的有效管理和操作。系统采用MySQL作为后端数据库存储数据,提供了基本的增删查改功能,虽然规模不大,但包含了...
是一个简易的ASP.NET系统,主要实现登录功能和两个模块信息的增删改查。 二、功能介绍 1、管理员信息管理:添加、修改、删除、查找用户信息,分页,添加,修改用户权限; 2、学生信息管理:添加、修改、删除、查找...
本文通过对现代企业信息化管理进行分析,根据商场信息化管理的实际需求,设计并实现了一个基于WEB技术的商场管理系统。该系统由七个功能模块组成,即:商品信息管理模块、客户信息管理模块、商品进货管理模块、商品...
通过对现代企业信息化管理进行分析,根据商场信息化管理的实际需求,设计并实现了一个基于WEB技术的商场管理系统。该系统由七个功能模块组成,即:商品信息管理模块、客户信息管理模块、商品进货管理模块、商品销售...
综上所述,"MVC5.0+EasyUI+SqlServer简易权限管理系统"是一个结合了MVC5的分层架构、EasyUI的前端展示以及SqlServer2008数据存储的Web应用实例,实现了对数据的基本操作,同时利用Ztree控件实现权限的层级管理。...
SSM权限管理系统是一个基于Spring、SpringMVC和MyBatis三大主流Java开发框架构建的简易权限管理系统。这个系统旨在提供一套完整的权限管理解决方案,包括权限树的构建、权限的增删改查、日志管理和角色管理等核心...
《简易网上书店系统设计与实现》是一篇详细阐述基于B/S架构的网上书店系统开发的论文,该系统采用ASP编程语言和ACCESS数据库进行构建。网上书店系统作为一种商业信息系统,其核心在于提供便捷的网络购物体验,使用户...
本文将深入探讨一个使用SpringBoot框架实现的简易超市管理系统,它结合了现代Web开发技术,旨在提高超市的运营效率和管理水平。 SpringBoot是Spring框架的一个重要组成部分,它简化了Spring的应用配置,提供了“开...
本文将深入探讨一个使用JavaWeb技术和MySQL数据库构建的简易商品超市管理系统,帮助读者理解其核心原理和实现过程。 首先,我们来看系统的整体架构。这个系统基于JavaWeb技术,采用Servlet作为控制器,JSP作为视图...
在开发【简易JSP信息管理系统】时,开发者需具备Java基础、数据库知识以及Web开发经验,通过整合各种技术手段,实现一个功能完善、易用的信息管理平台。在实际使用过程中,可根据需求进行定制和扩展,以满足不同场景...
总结,基于Web的高校学生选课系统设计与实现是一项涉及多方面技术的工作,需要综合运用Web开发、数据库管理、网络通信、安全性等多个领域的知识。通过科学的需求分析、合理的系统架构、高效的技术实现,可以构建出...
【简易Web服务器博客源码详解】 在Web开发领域,创建一个简易的Web服务器博客源码是初学者和开发者常做的实践项目。这个项目的核心目标是实现一个基础的HTTP服务器,能够处理请求并返回HTML页面,展示个人或团队的...
【简易的留言板模块系统】是一种基础的Web应用,主要用于提供用户与系统之间的互动交流平台。在这样的系统中,用户可以方便地留下他们的信息、意见或建议,而管理员则可以通过后台管理界面来查看、回复和管理这些...
【简易CRM客户关系管理系统SSH】是一个基于SSH框架开发的轻量级应用,旨在帮助咨询人员高效管理和跟踪与客户的互动过程。SSH(Struts2、Spring、Hibernate)是Java Web开发中常用的三大开源框架,它们各自负责不同的...
在这个简易的购物管理系统中,我们利用了Java EE平台来实现MVC模式,以实现高效、模块化的开发。 1. **模型(Model)**: 模型是应用程序的核心,负责处理业务逻辑和数据管理。在这个购物管理系统中,模型可能包含...
总的来说,SSH简易部门管理项目是一个典型的Java Web应用实例,展示了SSH框架在实际开发中的应用,同时也为学习者提供了一个良好的学习模板,帮助他们理解和掌握企业级应用的开发流程。通过这个项目,开发者可以提升...
【基于Java Web的酒店管理系统】是一个综合性的应用项目,它主要使用Java编程语言以及Web技术来构建一套完整的后台管理系统,用于高效地管理酒店的各项业务。这个系统通常包括用户登录、客房管理、预订管理、入住退...