最近项目中需要设计一个权限系统,收集了一下资料,权限系统主要有两种技术:ACL(Access Control List)和RBAC(Role-Based Access Control)。前者是将用户直接和权限关联,并通过Group来组织这些用户,windows 系统的用户权限就应该属于这一种(有待确认)。后者通过角色将用户和权限隔离开来,对角色赋予权限,而一个用户就一种角色的一个实例。
ACL的优点是能够直接针对用户进行权限设置,权限设置较为灵活,每个用户都可以完全不同,但是这也增加了管理员设置权限的复杂性。RBAC更便于用户的管理。对于两者的详述和比较在不在此啰嗦,网上有很多相关资料。
下面就说我做的事情。
设计需求:
1. 以项目为单位的权限控制;
2. 项目分为不同的小组,比如仪表组、DCS组等,每个组所使用的系统模块不同;
3. 每个小组下面又有不同岗位,比如仪表选型、样本维护等。不同岗位的人员,对该小组对应的系统模块下的不同功能的使用权限不同。
第2对应RBAC的Group,第3对应RABC的Role,这一部分画出了如下的数据库ER图。
这中结构就是通常介绍RBAC的通用结构,比较容易理解。从ER图中可以看出,权限分配是以角色为单位,这是RBAC的最主要的特点。同时,从很多资料中看到,RBAC一般只做到功能级别的权限控制,而对于更加细粒度的数据控制很难实现,比如细化到行数据,甚至是字段的操作权限控制。
下面的这些需求就是让我纠结了很久。
1. 对于同一岗位(角色)的不同人员(角色实例),能够查询该岗位的所有人员创建的数据,但是只能够修改或删除自己所创建的数据;
2. 对于非自己所创建的数据,只能访问该数据的部分字段。
其实,第1条就是基于行数据的访问控制,第2条就是基于字段的访问控制。为了满足这两项,添加了三张数据表,形成了下面的ER图。
“权限类别”数据表相当于一个枚举变量,包括 项目、组、角色、个人四个值,比如一项“样本维护-删除-样本”(角色-操作-功能)的操作权限的权限类别属于“个人”,那么一行样本数据只能够由该数据的创建者删除;如果数据“角色”,那么该数据可以由所有的样本维护角色的人员来删除。这样,就可以满足第1条需求了。
上述仅为自己做这个权限设计的初始想法,还未验证,也未进行编码,欢迎各位拍砖!
相关推荐
基于角色的权限管理数据库设计。内有建表语句及测试语句。
详细阐述了基于角色的权限控制的数据库设计,页面元素控制等
很多初学者面对这样的需求不知道如何下手,特别是稍微复杂点的权限,更是找不到方向,为此我们夜鹰教程网特别推出了这套基于角色的权限管理视频教程,通过给用户分配角色,给角色分配权限,来实现权限管理。...
4数据库设计 18 4.1 数据库逻辑结构设计 18 4.2 数据库物理结构设计 19 5 系统的详细设计与实现 21 5.1 系统登录页面 21 5.2 用户列表信息页面 21 5.3 添加用户信息页面 22 5.4 权限管理信息页面 22 5.5 添加角色...
经典的数据库表设计,基于基本权限功能的设计。
在系统中,管理员的角色是安全高效地存储和管理各种信息,同时管理、更新和维护后端具有相应操作权限的系统。 4 系统概要设计 11 4.1 概述 11 4.2 系统结构 11 4.3 数据库设计 12 4.3.1 数据库实体 12 4.3.2 数据库...
基于角色的权限菜单功能的实现 C# WinForm中实现基于角色的权限菜单 代码完整 有附数据库结构 下载即可使用
毕业设计-基于springboot-在线动漫信息平台-设计与实现(源码 + 数据库 + LW + PPT + 演示视频)是一个经过高分通过并得到导师指导的实际案例。 它可为计算机相关专业的学生提供一个毕设选题和实战练习的机会,同时...
毕业设计基于SpringBoot+Mybatis-Plus+Vue实现的实现招聘系统源代码+数据库 安装教程 recruit-sys为后端,使用IDEA打开,导入依赖后,更改数据源,数据库在/sql文件下 recruit-web为前端,安装node.js V12以上版本,...
工具,数据库采用了MySQL进行设计开发,服务器采用了Tomcat服务器技术。该网站系统能够将学校周围商家的外卖产品在网站上向用户进行展示,当学生用户选好产品,可以通过在线多渠道进行付费结算。当商家接收到了订单...
毕业设计-基于springboot-疫情网课管理系统-设计与实现(源码 + 数据库 + LW + PPT + 演是一个经过高分通过并得到导师指导的实际案例。 它可为计算机相关专业的学生提供一个毕设选题和实战练习的机会,同时也适用于...
数据库设计:设计数据库模型,包括学生、教师、项目等相关表格,并建立相应的关系。 创建Django项目:使用Django框架创建一个新的项目。 创建应用:根据需求创建相应的应用,如学生管理、教师管理、项目管理等。 ...
基于数据库的通用权限管理模块的设计与实现,使用基于角色的权限控制
指出在设计该安全机制时,应首先创建全局组,通过SQL Server Users组获得服务器访问,通过具体数据库组获得数据库访问权限,然后根据用户访问需求创建数据库角色并对角色分配权限,最后全局组通过加入角色获得权限,从而可...
毕业设计:基于SSM的mysql_电能计量与客户服务管理系统vue(源码 + 数据库 + 说明文档) 2 关键技术介绍 6 2.1 VUE简介 6 2.2 MYSQL简介 6 2.3 JAVA语言简介 7 2.4 MyEclipse开发平台 9 2.5 SSM 简介 10 3 需求分析...
毕业设计-基于SSM与Java的电影网站的设计与实现 基于SSM(Spring+SpringMVC+MyBatis)与Java的电影网站的设计与实现是一个实践...- **数据库设计**:设计数据库模型,包括用户、电影、评论等实体。 - **用户界面设计**
Java毕业设计-基于SSM框架的在线购物系统(源码+说明+演示视频+数据库).rar 【项目技术】 开发语言:Java 框架:ssm 架构:B/S 数据库:mysql 【实现功能】 使用在线购物系统的用户分管理员和用户两个角色的权限子...
javaweb课程设计-基于Javaweb的宠物医院管理系统源码+数据库.zip 95分以上高分必过项目,下载即用,确保可以运行,无需修改。 本宠物管理系统一共包括 5个模块,分别为:系统信息管理模块、兽医信息管理模块、宠物...
该系统主要有用户管理、功能管理、角色权限管理、学生网络考试、试题管理、错题管理、自动组卷等功能。 本文提供了一些该系统的部分代码跟截图帮助介绍该系统,对系统的总体设计、详细设计以及测试都给出了一些介绍...