`
yjian84
  • 浏览: 40268 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于系统权限的总结

阅读更多
权限控制包括功能控制和数据控制,这里只做功能控制的总结:
先来看一张普通权限类图表示关系:



1:功能控制:
          a)服务器端控制
          b)客户端控制
2:服务器端控制:
      可以选择的方法很多,(spring aop、struts2拦截器、filter过滤器、springmvc 拦截器等等。)不管采用哪种方式控制服务器端的访问都是一个目的:控制用户访问的url(用户访问的方法),因此对于控制就需要一个检查用户是否有此方法执行的权限,(检查用户权限的方法)。只要在用户请求某个url或者方法时 我们做一下检查如果用户有这个权限,就继续执行,没有就跳转到 没有权限的页面(自己定义)

      再来看这个方法:
      对于权限就是资源和操作,那么在系统启动的时候,可以把所有的权限(Function)数据初始化到(list、map、set、缓存、等等)中,备用。用户登录成功后可以通过用户得到用所有的权限(Function)这里包括资源和操作。
     当用户请求一个URL过来的时候,我们可以得到URL字符串,并对这个字符串做一些列的操作,最终目的是得到和数据库中Function对应的url一致的字符串,然后比较一下。如果有就方形,没有就跳转页面
 
       /**
          *url 用户请求的url
          *f 用户所拥有的操作权限(根据用户信息查找数据库得到)
        **/
         
       boolean  checkUserFunction(List<Funciton> f,Stirng url)


这样就可以控制服务器端的访问权限了。但是有个问题:对于用户登录,用户退出,有。。。一些不需要权限控制的url也做了限制。这里有种思路:
                               1)在做验证权限的时候(执行checkUserFunction)之前判断一下这个url是不是需要做权限检查,需要就检查,不需要就放行,不检查。
                               2)如果采用框架之类的验证(springaop struts2 等等),可以在要执行权限检查的方法上写个注解(自己写),然后再检查权限的时候可以方便的看看如果此方法有这个注解就验证,没有就不验证。和上面一样了。只提供思路


因为大部分系统都使用了spring ,这里建议采用spring的aop 如何配置我就不写了。每个人的配置方式可能不太一样,但是目的都是一样的。

到此服务器端的权限验证就完了。


客户端的权限检查:






            1:菜单列表 一般都是循环用户的权限得到的。
如何循环是关键:用户得到的是 存有顶级菜单的List 和存有操作链接的List (一个list里是有url的,一个是没有的 。)
提供思路:1)循环顶级菜单(用户的权限菜单) ,顶级菜单的循环里面在循环 操作链接的菜单(二级菜单)二级菜单的parentId是顶级菜单的id 根据这些可以循环出来。




这样是不是就可以看出如何做了。
先根据用户查权/限  parentid is null and id in(select funid from fun_role where  role id in (select roleid from role_user where userid =?))顶级菜单 就是关联查询。自己写吧。我瞎写了一下。
在根据用户查 parentid in (顶级菜单ids) url is not null  去掉重复的就是用户的二级菜单了。

这样就很好循环了。先循环顶级菜单的list 显示名字 在循环二级菜单的list if(parentid==id)显示名字就行了。

2) 通过自定义标签去做循环的时候把不需要的过滤出来。

比如循环顶级菜单,然后再里面做个自定义标签,传入顶级菜单的id
在tagsupport 类里自己处理,当然处理的时候,也要是需要用户的权限列表的List的。符合条件就渲染出来,不符合就跳过。
自己去看如何自定义标签吧。


        按钮的控制:

1:如果用了struts2 ,项目里面同一用了struts2的标签库,比如<s:a action=""/>
或者button ,这样就可以修改struts2的源码了,源码如何改自己想办法,提供思路:把需要修改的类找到源码,然后新建一个和他的包名一样,类名一样的类。把源码copy进去,在你需要的地方修改就可以了。检查权限(用户的权限已经查出来了。),通过action 这个名字可以很容易的得到这个按钮对应的权限url,在比较这个url和用户的权限列表,如果没有这个权限就不渲染超链接,如果有才渲染。(doStartTag 标签开始 时呼叫 和doEndTag标签结束式呼叫的方法,返回值不同有不同的含义。再整理。)

2:一般的项目可能不会用框架的标签库,这样我们就自定义一个标签用来输出,在项目开发初期设计好一个标签,便于用来做权限控制,要求项目组的用到链接的地方都用此标签。当然,这要和美工事先约定好,是用button,还是用超链接做按钮。
自定义标签mytag:a  id="" name="" action="" url="" class="" 一般就用到这些吧。然后在自定义标签里判断是否显示此按钮。

3:如果项目做得差不多了,而且项目开始时没有考虑权限控制,项目组人员有的用button 有的用a 超链接该如何做呢。在每个链接上都加上判断,如果有权限显示,没权限不显示。
我有想有另外一种做法:
        因为之前说的在存权限(菜单和操作的时候) 存了id不管是button的id 还是超链接的id还是别的id 都可以的。我们可以写一个全局的js函数,在用户访问一个连接的时候,可以得到用户的所有的操作权限的id(也就是页面中按钮或者超链接对应的id)集合。这些数据自己可以整理一下,便于使用。将这些id和所有的权限(数据库中所有的权限操作)比较(就是用户拥有的操作按钮id 和所有操作id比较) 如果没有就根据id remove掉,remove之前先判断能不能取到这个js对象。这样把这个js作为一个全局的js引入就可以了。

4:大部分项目的后台会用到一些js框架,我这次简单的使用了一下liggerUI这个框架,我想大部分框架都差不多。通过框架一般生成的按钮是根据id找不到的。也不好再自定义标签。
此时如何做呢。还是需要和上面删除remove按钮一样的思路。
不过不能根据id了。通过上面我们可以排除出来哪些按钮是不用的,可以知道id
我们就要研究js框架了,看看他是如何做的,然后根据特点把他的按钮删除掉就可以了。

下面试ligerUI的按钮删除:
toolbar : {
								items : [
										{
											text : '增加',
											icon : 'add',
											id : "dept_add",
											click : clickAdd
										},
										{
											line : true
										},
										{
											text : '修改',
											icon : 'modify',
											id:"dept_update"
										},
										{
											line : true
										},
										{
											text : '删除',
											img : '${pageContext.request.contextPath}/ui/ligerUI/skins/icons/delete.gif'
										}, {
											line : true
										}, {
											text : '部门列表',
											icon : 'search'
										} ]
							}



到这功能权限的前台控制和服务器端控制都完了。
我们可以根据项目需要选择不同的思路。

我对js框架删除不是很了解只有这一种思路,我想应该有更好的思路去解决这个js框架按钮的权限控制。















                      














  • 大小: 56.8 KB
  • 大小: 77.9 KB
  • 大小: 84.7 KB
  • 大小: 68.8 KB
分享到:
评论

相关推荐

    linux系统权限总结

    在深入探讨Linux系统权限之前,我们首先应当理解其基本架构与设计原则。Linux作为一种开源的类Unix操作系统,其权限管理机制是确保系统安全与稳定的关键因素之一。在Linux环境中,每个文件或目录都有对应的权限设置...

    Linux系统权限总结1

    本文主要总结了Linux权限的基本概念、特殊权限、权限管理原则以及如何通过ACL(Access Control List)和sudo进行权限控制。 首先,我们要理解Linux文件系统的权限模型。在Linux中,每个文件和目录都有三个基本权限...

    winform 权限分配系统

    《winform权限分配系统详解及应用》 ...总结,Winform权限分配系统在实现动态权限管理和角色分配方面具有实用价值,但也存在优化空间。理解并掌握这些知识点,对于开发高效、安全的权限管理系统具有重要意义。

    系统管理权限设计

    ### 系统管理权限设计详解 #### 一、引言 在现代企业级应用系统中,权限管理是一项至关重要的功能。特别是在基于浏览器/服务器(B/S)架构的应用中,由于客户端浏览器的高度普及性和开放性,确保只有经过授权的...

    超市管理系统开发项目总结

    【超市管理系统开发项目总结】 超市管理系统是针对20世纪90年代以来我国零售业发展的重要产物,随着超市规模的扩大和信息流量的增加,传统的管理方式已无法满足现代超市的运营需求。在这种背景下,引入基于计算机的...

    Android 悬浮窗权限各机型各系统适配大全(总结)

    Android 悬浮窗权限各机型各系统适配大全(总结) 本篇博客主要介绍了 Android 悬浮窗权限各机型各系统适配大全,涵盖了 Android 主流各种机型和各种版本的悬浮窗权限适配。鉴于 Android 系统的碎片化问题,在适配...

    ASP.NET通用权限管理系统

    总结来说,ASP.NET通用权限管理系统利用ASP.NET 2.0框架的特性,实现了用户认证、角色管理和资源访问控制等功能,为企业级Web应用提供了安全的访问控制环境。通过角色分配和权限设定,确保了数据和操作的安全性,...

    通用权限管理系统WEB

    【通用权限管理系统WEB】是一个基于Web的权限管理解决方案,它采用了Devexpress组件库来构建用户界面,提供了丰富的交互体验。这个系统设计的目标是为不同类型的组织提供一个灵活且可扩展的权限控制框架,使得管理员...

    实验七 NTFS文件系统权限实验.doc

    NTFS 文件系统权限实验 本实验旨在学习和应用 Windows NTFS 文件系统权限的管理和应用。下面对实验的详细内容进行知识点总结: 一、 NTFS 文件系统权限概述 NTFS(New Technology File System)是 Windows 操作...

    .net 权限管理系统源码

    总结起来,.NET权限管理系统源码结合了.NET的开发优势和EasyUI的前端便捷性,为开发者提供了一个高效、易用的基础框架,通过深入学习和实践,开发者可以掌握权限管理的核心概念和技术,提升在实际项目中的应用能力。

    .net权限管理系统

    总结来说,.NET权限管理系统是构建后台管理系统的基石,它通过严谨的权限控制,确保了后台系统的安全性。通过理解并熟练运用.NET提供的权限管理机制,开发者可以构建出符合业务需求的高效、安全的后台管理系统。在...

    easyui基本权限管理系统

    总结,EasyUI为开发者提供了构建权限管理系统的便利工具。通过合理利用其组件和交互特性,开发者可以高效地创建出功能完善、用户体验良好的权限管理系统。在实际项目中,还需结合后端逻辑和数据库设计,实现完整的...

    easyui后台管理系统(菜单权限,按钮权限)

    总结来说,"easyui后台管理系统(菜单权限,按钮权限)"是一个集成了SpringMVC、Hibernate、MySQL和JSP的Web应用,利用EasyUI实现了用户友好的界面和精细的权限控制,适用于构建各类企业级的后台管理系统。...

    通用系统权限的设计需求

    ### 通用系统权限设计的关键知识点 #### 一、引言 在现代企业级软件系统中,权限管理是一项至关重要的功能,它确保了系统的安全性、稳定性和高效性。特别是在大型企业中,由于用户数量庞大,权限需求多样,因此...

    通用权限系统设计说明书

    权限表(action表)是整个系统权限信息的存储中心,它记录了系统可以执行的所有操作。管理组表(groupmanager表)则用于定义不同的权限组合,它将各个权限根据业务逻辑的需要进行归类。人员表(master表)包含所有...

    RBAC权限管理系统

    总结,RBAC权限管理系统结合了ThinkPHP的后端处理能力、MySQL的数据存储功能以及dhtmlx4Pro的前端展示,构建了一个高效且易于管理的权限控制平台。这样的系统对于保障企业内部数据安全,规范员工操作行为具有重要...

    管理系统系列--后台管理系统,集成权限管理. 账号:admin,密码:123456.zip

    【标题】"管理系统系列--后台管理系统,集成权限管理"揭示了这是一个专为后台操作设计的系统,具有用户管理和权限控制的核心功能。此类系统通常用于企业级应用,帮助管理员有效地管理用户账户,分配不同级别的访问...

    基于RBAC权限模型搭建的高效智能权限管理系统.pdf

    在结论中,作者总结了基于RBAC模型的智能权限管理系统的设计和实现,认为该系统可以满足电子商务的安全性要求,并且可以提高系统的效率和速度。 "基于RBAC权限模型搭建的高效智能权限管理系统.pdf" 关键词:智能...

    角色权限管理系统.doc

    角色权限管理系统是一个关键的软件设计领域,主要用于控制和管理用户在特定系统中的访问权限。本实验报告由西安石油大学计算机学院的学生杨晓和杨莎莎完成,旨在介绍他们设计的一个小规模权限管理系统,并分享其设计...

    权限系统需求

    总结,权限系统的需求涵盖了用户认证、授权和审计,而实现这些需求则需要结合如MySql和Oracle这样的数据库系统。理解并合理设计权限系统,不仅可以保障系统的安全,还能提升用户体验,是IT系统设计中不可或缺的一环...

Global site tag (gtag.js) - Google Analytics