028-86261949

当前位置:首页 > 技术交流 > 系统权限设计

系统权限设计

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过滤)。

 

 

 

 

 

#标签:系统权限,权限设计,Java教程,源码时代