RBAC权限管理系统实现思路(一)

RBAC(Role-Based Access Contro) 是基于角色的权限访问控制,系统根据登录用户的角色不同,从而给予不同的系统访问权限,角色的权限随角色创立时进行分配。
首先,权限控制很多系统中都需要,但是不同的系统对于权限的敏感程度不同,因而权限的设计实现方式不同,这里的介绍一个简单的RBAC权限管理的Demo。
假定这个系统分为:模块一,模块二,模块三。。。。这里先讲一下做系统的权限管理时需要做的准备工作。
一,需求分析
明确需求是快速实现系统的基础,没有明确的需求你就很可能在做无用功,浪费时间就是浪费生命。最然现在敏捷开发很流行,但是大的框架,方向一定不能错,否则迭代的成本是无法估计的。
假定该系统根据不同功能模块的操作需要不同的部门和角色来划分权限,那么大致划分一下部门:部门一、部门二;然后每个部门下有不同的角色:角色一、角色二。二不同的角色具有不同的权限组合(注意组合,每个权限是相对独立的个体,后面涉及到数据表的设计)。
以上便是最基础的一个系统需要的权限了。有的系统可能不需要部门那么就只涉及权限和角色。

二,数据库设计
这些表的设计仅供参考,一些属性可以忽略,基本属性可供参考。
角色表:
这里写图片描述
权限表:
这里写图片描述
角色权限表:
这里写图片描述
部门表:
这里写图片描述
部门权限表:
这里写图片描述
用户表:
这里写图片描述
这里说明一下,角色和权限事多对多关系,部门和权限也是多对多关系。
三、概要设计:
首先理一下,那些地方需要权限控制,分为以下几个模块:
1,系统登录,提供正确的用户名和密码才可以登录系统,未登录系统禁止访问其他界面。
2,系统主界面展示,根据用户的角色不同部门不同展示不同的菜单选项。
3,防止越过前台操作后台。比如脚本攻击,或者模拟客户端发送请求。
4,防止越权操作。(需要系统前后台做权限的校验)

那么首先要实现的是一个基本安全的系统,就是未登录禁止访问其他页面。
实现的方式有多种,这里只介绍使用拦截器拦截请求的方式。(你还可以使用过滤器,或者aop)
关于拦截器和过滤器的区别可以查看:http://blog.csdn.net/phoenix_smf/article/details/79074240
那么拦截器的目的就是所有从客户端发送的请求到服务端都被拦截下来,只有符合要求的才被放行,那么具体怎么设计拦截器的操作和配置呢,欲知后事如何,且听下回分解。

猜你喜欢

转载自blog.csdn.net/Phoenix_smf/article/details/79460674