系统权限设计
2017/03/17 15:00 分类: 技术交流 浏览:188
一. 概念简述
资源 : 指的是系统中,所有可以使用的功能。 权限 : 针对资源,对资源的访问添加控制的方式。 角色 : 针对权限,对权限的打包。 |
理解:
锁 : 把“权限”添加到“资源”上。
钥匙 : 把“权限”(包含权限的角色)添加到“用户”上。
二.资源管理
资源就是对系统功能的抽象,目的就是为了快速创建权限。
三.角色管理
一堆权限的打包
四种权限管理方式
1、资源(URL)权限控制★★★★★ 2、模块菜单权限★★★☆ 3、系统菜单权限★★★ 4、数据显示权限★★★ |
四.资源(URL)权限控制
针对系统功能的访问(控制器资源做事)控制。
实现步骤:
核心就是通过“拦截器”,来根据请求资源地址进行控制。
1.获取请求的资源地址
控制器地址:cn.itsource.crm.web.controller.EmployeeController
请求方法 :save
资源地址 : cn.itsource.crm.web.controller.EmployeeController:save
2.检查该资源是否有对应的权限(是否上锁)
3.如果没有权限(没有锁),直接放行
3.如果资源有权限,检查用户的操作权限(检查钥匙)
a.检查具体钥匙
b.检查万能钥匙
4.如果有权限,放行
4.如果没有权限,拦截,提示!!
五.模块菜单权限
针对资源权限的增强,从根源上解决控制用户使用功能的问题。
分析思路:
怎么(根据用户的权限)隐藏页面按钮呢 ??
1.jstl标签。c:if标签可以动态控制页面内容显示。(采纳)
a.引入jstl标签库
b.在需要动态控制的标签上下文,添加c:if标签
c.添加c:if的判断条件
d.结果:
如果有权限,则显示内容(按钮)
如果没权限,没有内容(按钮)
2.javascript脚本。找到页面页面后,动态删除。
a.让按钮和权限之间有一定联系
比如,在按钮标签上,添加一个data-permission的权限
b.在页面加载完毕后,获取按钮上的权限信息,发ajax请求做后台验证
save,update,delete,report
c.获得返回结果
true,true,false,true
d.根据返回结果,设置可见性
隐藏
删除
3.第一种的扩展,自定义标签!!
六.系统菜单权限
在一个大型项目中,有非常多的系统菜单项目,在用户登录后,根据不同的权限,看到不同个数、不同功能的菜单。(那么作为一个普通员工,应该只需要看到自己能够操作的模块。而对于管理员,又可以看到所有的模块)。
管理思路:
1.用户输入账号密码登录
2.系统检查用户的权限(或角色),显示对于的菜单项目(核心)
a.根据角色,控制菜单(角色管理菜单)
b.根据权限,控制菜单(菜单管理权限)
3.用户看到自己相关的菜单,做业务操作
实现思路:
a.解决关系问题
为菜单模块,增加一个系统权限字段,来建立菜单和权限的关系。
维护菜单,保存菜单对应的模块(导向)权限
b.在用户登录时,过滤菜单
找到用户所有的权限
找到系统所有的菜单
循环所有菜单,对菜单进行用户权限验证
如果有权限,则保留菜单
如果没权限,则删除
七.数据显示权限
根据用户不同的“角色”进行,不同数据的展示。
核心:
根据不同角色,添加过滤条件(SQL级别WHERE过滤)。
赞 0