用户、角色和权限开发.pdf
文本预览下载声明
用户、角色和权限开发
导言
最近花了一段时间在做权限开发者一块,从设计到编码,我都全程参与了,对
权限开发也有了一个本质上的了解,权限管理作为一个系统最基本也是最重要
的功能之一,在一个系统中是非常重要的,今天我就侃大山,聊聊我这个系统
的权限开发的一些东西,与大家交流交流。
1、系统的原有权限管理模式
之前这个系统的权限管理是通过配置文件来处理的,大概流程是这样的,把用
户分成多个用户组,然后每个用户组对应着多个用户的 id ,每次访问页面的时候,
都会读取这个配置文件的信息,判断登录用户的 id 属于哪个用户组,然后在页
面判断这个用户组是否有访问这个链接的权限。配置文件的格式是这样的 : {ad
m : [1,2,34], dev : [5,6,1]} 这样会带来什么问题呢?有以下几个:
? 权限管理混乱,一个用户 id 可能会在多个权限组中
? 每次更新配置文件,都要重新上线,麻烦
? 没有图形化界面,配置权限困难
? 页面有太多的 if 判断语句,造成代码可读性差
2 、新的权限管理开发
这里要强调一遍,这个系统数没有用外面流行的框架的,都是 jsp 加上之前封
装的框架来使用的, 所以你们可以发现我这个权限开发是没有用到以前用框架开
发权限要用到的过滤器, 监听器之类的, 或者你可能会说, 没有用框架也可以用
过滤器和监听器啊,因为这是 Servlet 的东西。在这里我要解释一下,现在市面
上的权限管理我个人觉得大致可以分为两种:
1. 用户进入系统的时候不判断权限,把系统中的所有功能入口都开发给用
户,每次用户点击相应的功能入口时,通过链接和用户判断该用户是否有
使用该功能的权限, 有权限则进入, 没有权限则跳转到没权限的提示页面,
这种功能一般都是使用过滤器来完成的
精选文库
2. 在用户进入系统的时候就判断用户的权限, 根据用户的权限开发相应的功
能入口,不同权限的用户看到的页面是不一样的。相比第一种来说,这种
的好处是可以屏蔽掉用户没有权限访问的功能入口,用户只能看到自己权
限所拥有的功能入口, 而根本不知道该系统还有什么功能, 更有利于保密。
但是,如果只是在用户进入系统的时候就判断权限,以后不再判断,那么
就会出现第一种情况中不会出现的问题,那就是 权限试探 , 我可以通过模
拟地址栏的形式,不断地改变参数(有些提交方式不得不是 get 提交,所
以地址栏难免会带有参数)来达到破坏权限的目的,代码写得不严谨,这
个问题就会发生在你的系统上,比较好的做法就是,在每一次访问页面的
时候,都重新再判断一次权限。所以本来就不需要使用过滤器的地方又得
再使用上了。
然并卵,因为系统的特殊性,该系统的权限开发都不会用到过滤器和监听器,
所有的权限判断都写在了一个公用页面上,然后再在每个页面上 include 进去,
也达到了类似于过滤器的效果,然而,我是不赞成这样的写法的,框架、过滤器
能存在,自然有他们的道理, 我之前也做过用框架的权限开发, 觉得那样更方便,
当然,这是题外话了。
(1) 数据库设计
话说刚开始在设计数据库的时候还是碰到不少壁的, 因为头脑中还是留存着系
统原有权限管理的余威, 在最初设计的时候还受到它的一点影响, 后来,干脆就
不参考以前的权限管理模式了,做出自己的一套出来 。
用户表 (acctUser)
字段 类型
显示全部