实现业务系统中的用户权限管理--实现篇 在设计篇中,我们已经为大家阐述了有关权限管理系统的数据库设计,在本篇中,我们将重点放在其实现代码部分。为了让你能够更直接更有效的看到全部动作的代码,我们使用“动作分解列表”的方式来陈述每个动作以及相关资源。 实现权限管理功能的动作 系统动作 详解模组: 1.setup(数据库初始化、权限设置模组) 当布署好一个新的系统后,我们可以通过执行一个动作setup来安装数据库和一些初始值,通过执行这个动作系统可以正常运行。因为执行setup这个动作时会调用到一个名称为setup的模组,这个模组的作用是初始化系统所用到的数据库,并且在系统中设置动作的权限,否则数据库和有权限的动作就没办法执行。下面我们来看一下setup模组的代码,点击这里查看代码。这里我们把代码拆分开看一下,由于setup模组里有好多类似的代码,所以这里我们只找出不同功能的代码做一下介绍: 第一段:数据库安装 在模组中首先调用了一个datebase_SQL_setup这个数据库操作集,这个数据库操作集用来为系统中的数据库表(根据情况删除或新建)做初始化。 第二段:添加权限信息 代码中调用了action_I_newone这个数据库操作集,在这个操作集中加入权限的名称和它的其它信息。 第三段:添加一个管理员 这部分代码中调用了master_I_newone数据库操作集在数据库中添加了一个管理员的信息,这个信息是可以不写在这里的,可以直接在数据库中添加,但是为了减少不必要的麻烦所以直接在这里添入了一个默认的管理员。 第四段:添加管理员组 通过调用groupmanager_I_newmaster这个数据库操作集新建了一个管理员组,并加入了详细的管理员组信息,可以把新用户加入到此管理员组。 第五段:添加新的工具分栏 通过调用actioncolumn_I_newone数据库操作集在工具栏里加入一个工具栏分栏选项。 第六段:指定管理组 通过调用mastergroup_I_newone数据库操作集把admin这个用户加入到第一个管理组里,使该用户成为第一个管理组的成员。 最后一段:指定管理组拥有的权限 这段代码首先调用了action_S_all数据库操作集并使用Loop语句列出所有的动作,然后调用actiongroup_I_newone这个数据库操作集,把所有的动作都加入到第一个管理组里,使第一个管理组拥有所有权限。 这里之所以把数据库的安装和权限的设置都放在模组里面,是为了使用户使用更加方便,不需要再去重新手动建库,以减不在数据库这方面的错误,使系统更加简单流畅。如果其它系统也需要权限这方面的管理,可以把模组稍做修改就可以直接拿来用,这样也体现出代码的重用性。 2.checkuserpurview(检验当前用户能否执行该动作的模组) 在权限管理系统中,模组checkuserpurview得到了反复使用,该模组担负着检测用户权限的任务,在所有需要进行访问权限控制的动作的开始部分都调用了该模组,所以理解该模组的代码也有一定难度。下面,我们来看一看该模组的代码。 我们将整段代码拆分一下,首先看第一段,如下图: 判断_SESSION.myloginid的值是否为空,如果为空,在当前页面中执行nosession这个动作。我们在用户登陆的动作中login会为登陆的用户使用myloginid的SESSION变量记录下该用户的ID,因此如果用户是正常登陆并在SESSION有效期内的话,则_SESSION.myloginid的值是不可能为空的。通过此部分代码检测用户是否已经登陆成功并获得合法的访问身份。 然后看下面的代码,如下图: 调用数据库操作集mastergroup_S_bymasterid,使用逻辑层的Loop,使用当前执行的action以及查询返回的groupid作为条件,调用数据库操作集actiongroup_S_byactionandgroupid进行循环查询,如果查询返回值大于0(零),将局部变量purview的值设置为1。 这段代码的重点在于使用的Loop进行循环,由于actiongroup表中记录着用户所处的管理组能够执行的权限,并且一个用户可能同时会属于多个组,因此我们需要去检验用户属于的多个组中是否有对该动作执行的权限,因此,我们使用当前需要执行的动作action以及用户所处的管理组groupid循环查询,当前用户所属于的组中只要有一个组具有执行该动作的执行权限,则该用户就可以执行该动作。 最后一部分代码如下图: 再次使用判断,如果purview的值不为1的话,则在当前页面执行nopurview动作。 由于之前的代码中,如果用户拥有执行动作的权限的话,会将局部变量purview的值设置为1,所以这里如果该变量值不为1,就说明了此用户没有执行动作的权限,故执行nopurview动作。 总结 从设计到实现,权限管理系统的教程到这里就全部结束了。在设计阶段,最重要也是最难理解的是那两张映射表的作用,理解了两张映射表,基本上也就理解了整套数据库的设计。而实现阶段,比较难理解的就是上面说到的模组checkuserpurview了。理解该模组,需要联合数据库设计,actiongroup表中记录着用户组可以执行的权限,使用action字段和groupid字段进行查询,返回的数大于1,说明了用户所在的组拥有执行该动作的权限。 附录 MYSQL版本权限管理系统源码下载 MSSQL版本权限管理系统源码下载 |
相关推荐
实现业务系统中的用户权限管理--设计篇 实现业务系统中的用户权限管理--设计篇
实现业务系统中的用户权限管理--设计篇.PDF
实现业务系统中的用户权限管理--设计篇.doc
因此B/S业务系统都需要有一个或多个权限系统来实现访问权限检测,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的“非法用户”将会将他们彻底的“拒之门外”。下面就让我们一起了解一下如何设计...
11、权限管理--基于角色的访问控制(RBAC)标准,设计权限管理系统,对系统的各项功能进行合理的定义和分配。 12、系统日志--系统的各项业务操作,都有详细的操作日志,包括操作人、操作时间、IP地址等等,确保...
实现业务系统中的用户权限管理--设计篇 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问 用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器 是每一台...
11、权限管理--基于角色的访问控制(RBAC)标准,设计权限管理系统,对系统的各项功能进行合理的定义和分配。 12、系统日志--系统的各项业务操作,都有详细的操作日志,包括操作人、操作时间、IP地址等等,确保系统...
【资源说明】 1、基于spring boot + element-ui的后台管理系统源码+项目说明.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学...* 预设模块:用户管理、角色管理、权限管理 * ...
如下图所示: ν 系统层次结构说明 用户整合层:通过统一的门户,采用灵活严格的权限设置,使企业内外的用户都能 在这个平台上进行业务操作,实现全面的协作。 分析系统层:整合企业的所有有效信息,为管理层提供...
源海客户信息管理软件(Yuanhi CIM)是源海客户关系管理系统简易篇,适用于个人用户及各类小型企业业主及营销人员使用,属于CRM、营销、办公管理类软件。 软件主要特点: 1、电脑记录并管理电话、传真、邮件、...
**技术概述**:系统采用SpringBoot框架搭建,使用Shiro进行用户权限管理,实现单点登录,提高系统安全性。Redis统一缓存处理,提高系统性能和用户满意度,Hanlp文本处理并构建科技政策知识图谱网络图。 系统架构分为...
26.7 权限管理系统具体实现——用户操作 26.8 小结 第27章 商业银行设备巡检系统(struts 2.x+spring+hibernate) 27.1 商业银行设备巡检系统概述 27.2 商业银行设备巡检系统前期准备 27.3 商业银行...
Coalesys PanelBar + R.a.d Treeview +Xml 构建的Asp.net 菜单和权限管理模块 突破屏蔽限制,自己的网站使劲弹新IE窗口 对页面SCROLLING的CSS不能生效原因 .Net 中IE使用WinForm控件的使用心得。 动态加载用户控件的...
**技术概述**:系统采用SpringBoot框架搭建,使用Shiro进行用户权限管理,实现单点登录,提高系统安全性。Redis统一缓存处理,提高系统性能和用户满意度,Hanlp文本处理并构建科技政策知识图谱网络图。 系统架构分为...
TC 采用MVC 设计模式实现业务逻辑与表现层的适当分离,使网页设计师能够轻松设计出理想的模板,框架式开发易用扩展,支持自定义内容模型,可面向中小型站点提供重量级网站建设方案。对于那些想要进行开发,但技术...
采用MVC设计模式,实现业务逻辑与表现层的适当分离,使网页设计师能够轻松设计出理想的模板,能比以往任何时候都更快地构建高品质的网站解决方案。 通过miceCMS企业网站管理系统,企业建站者可以轻松构建一个企业...
网站导航实现自主管理,可自由添加、删除、隐藏栏目。 使用多层开发模式开发,更灵活的构架,理论上支持所有.net支持的数据库。 多重缓存机制,让网民超快地打开您的网站,让人觉得打开您的网站很“爽!”。 ...
网站导航实现自主管理,可自由添加、删除、隐藏栏目。 使用多层开发模式开发,更灵活的构架,理论上支持所有.net支持的数据库。 多重缓存机制,让网民超快地打开您的网站,让人觉得打开您的网站很“爽!”。 ...