需求分析—场景

假设需要为公司设计一个人员管理系统,并为各级领导及全体员工分配系统登录账号。有如下几个要求:

1. 权限等级不同:公司领导登录后可查看所有员工信息,部门领导登录后只可查看本部门员工的信息,员工登录后只可查看自己的信息;
2. 访问权限不同:如公司领导登录后,可查看员工薪水分布界面,而员工则不能看到;
3. 操作权限不同:如系统管理员可以在信息发布界面进行增删改查发布信息,而普通员工只可以在信息发布界面进行查看,不能修改、删除和新增。

功能分析

1. 登录一个系统,基本都需要用户输入用户名、密码;
2. 每个用户的角色不同,则其访问权限一般也不同,如:
系统管理员:可以查看所有界面;
普通用户:只能查看部分界面。
3. 不同的用户,即使可以查看同样的界面,但在该界面上可进行的操作权限也不同,如:
用户1:可以在界面1上进行增删改查;
用户2:只可以在界面1上查看,不具备增删改功能;
4. 不同用户基本都对应不同角色,如:用户1、用户2分别对应管理员角色、操作员角色,角色之间也存在权限等级的差异,如:
角色1:对应省级管理员;==>可以查看该省下的所有学校信息;
角色2:对应市级管理员;==>可以查看该市下的所有学校信息;
角色3:对应县级管理员;==>可以查看该县下的所有学校信息;
不管是省、市、县哪个系统管理员,他们可访问的界面都是相同的(即访问权限相同),且在每个界面上可进行的操作权限也相同的,不同的是每个管理员角色可以访问的学校个数和学校范围不同,这里称这种不同为:权限等级不同;
总结:
从上面的分析中,主要涉及到以下几个概念:
1.角色:
       如系统管理员角色,系统操作员角色,普通用户角色;
       不同的角色,其访问权限是不同的,即可访问的模块(界面)集合是不同的;

       角色的权限等级也不同,权限等级如:公司领导、部分领导、普通员工;
2. 模块:(界面)
    模块就是指具体的界面,每个模块上又有不同的操作,如增删改查;
3. 访问权限:确定角色可以访问的模块(界面)集合;
4. 操作权限:确定可以在各模块(界面)上进行的操作集合,如增删改查;
5. 权限等级:即确定角色可以访问的范围,如:
         角色1:权限等级为公司领导,则可以查看公司所有员工信息;
         角色2:权限等级为部门领导,则只可以查看该部门所有员工信息。
数据库设计

总体模型:



1.模块定义表:
模块是分层级的,如:信息管理–>联系方式管理;
每个模块都有上级模块。

2. 角色定义表:
含有角色权限等级,用于为角色分配权限等级;
角色权限等级:是一个菜单选项,包括公司领导、部门领导、普通员工;

3.授权定义表:
用于给角色分配访问权限以及为每个模块分配操作权限;
1个角色可以含有多个模块,同样1个模块可以分配给多个角色,所以角色和模块是多对多的关系;这种多对多的关系可以使用关系表来实现,即通过联合主键和实现关系表:
表中含有字段“操作权限”,用于给每个界面分配操作权限,见下图:
若该模块有增删改查功能,则操作权限15,即二进制的“1111”,若该模块只有查看功能,则操作权限为2,即二进制的“0010”,同样的,“0111”表示该模块有增、改、查功能;

4. 系统用户表:
该表中“角色权限等级”—>应与“所属角色”中的权限等级保持一致,之所以该表中重复该字段,是为了方便查询。
角色权限等级取值:
1. 公司领导:company_id不能为空;
2. 部门领导:company_id、dept_id不能为空;
3. 普通员工:company_id、dept_id、staff_id不能为空;

登录执行过程

1. 系统登录时,首先输入用户名、密码;
2. 确定访问权限
2.1 判断该用户的“角色编号”;
2.2 在“授权定义表”中根据该“角色编号”查找相应的模块,找到的模块集合即是访问权限;
3. 确定操作权限:

   3.1 在2.2步骤中查询到的每个模块都有相应的操作权限,即构成了每个模块的操作权限;
4. 确定权限等级
   4.1 结合该用户的“角色权限等级”+“公司标识”+“部门标识”+“员工标识”,到员工信息表中去查找相应员工,具体如下:
   角色权限等级取值:
1. 公司领导:查找<员工信息表.公司标识==该用户.公司标识>的所有用户;
2. 部门领导:查找<员工信息表.公司标识==该用户.公司标识 && 
                                  员工信息表.部门标识==该用户.部门标识>的所有用户;
3. 普通员工:查找<员工信息表.公司标识==该用户.公司标识 && 
                                  员工信息表.部门标识==该用户.部门标识 && 
                                  员工信息表.员工标识==该用户.公司标识>的所有用户;
   

权限设计-系统登录用户权限设计相关推荐

  1. 会员权限 表设计mysql_求用户-权限数据库表设计方案

    前不久做的一个系统,用户-权限是这样设计的, 用户表: Id int primary key not null identity(1,1) 主键 UloginName varchar(20) not ...

  2. Android系统system用户权限和root权限的获取

    在Android系统中,系统为每一个应用程序(apk)创建了一个用户和组.这个用户和组都是受限用户,不能访问系统的数据,只能访问自己的文件和目录,当然它也不能访问其他应用程序的数据.这样设计可以尽可能 ...

  3. 三层结构的任务管理系统可以实现登录,判断登录用户权限等操作

    任务要求 idea jdk1.8 三层结构的任务管理系统可以实现登录,判断登录用户权限等操作 任务管理系统 一.系统需求 查询所有任务信息:展示所有任务信息 录入任务信息: 用户输入:任务名, 预计完 ...

  4. MySQL基础|设置登录用户权限,访问ip地址---防止数据库误删,详细版

    对于公司的开发团队来说,需要协同维护同一个数据表,但是要防止新人因为代码不熟悉或者什么其他原因,把整个数据表给删除掉. 毕竟对于公司来说,一个程序是可以复刻的,但是极具商业价值的数据表却是长时间才能积 ...

  5. oracle 权限控制表,Oracle 用户权限管理与常用权限数据字典列表

    用户权限管理 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级.Role 角色级.这些权限可以授予给用户.特殊 ...

  6. RFID课程设计-图书管理系统用户端设计

    RFID课程设计-图书管理系统用户端设计课程设计题目课程设计任务内容题目设计基本原理NFC开发概述标签调度系统如何将 NFC 标签映射到 MIME 类型和 URI如何将 NFC 标签分发到应用在 An ...

  7. 忘记Windows XP系统登录用户的密码

    如果你安装的是Windows XP操作系统,不慎忘记了系统登录用户"*****"的密码,你可以NET命令来解决问题: Windows XP中提供了"net user&qu ...

  8. linux能修改用户的权限,linux怎样修改用户权限

    ls -l  查看目录下的文件详细信息 ll 同上 whoami 功能说明:先似乎用户名称. 语 法:whoami [--help][--version] 补充说明:显示自身的用户名称,本指令相当于执 ...

  9. 优酷网持久xss、设计缺陷、用户权限越权

    漏洞详情 披露状态: 2010-07-29: 细节已通知厂商并且等待厂商处理中 1970-01-01: 厂商已经确认,细节仅向厂商公开 1970-01-11: 细节向核心白帽子及相关领域专家公开 19 ...

  10. linux权限可被登录用户读取,Linux 用户及权限详解

    Linux 用户及权限详解 用户 , 组 ,权限 安全上下文(secure context): 权限: r,w,x 文件: r : 可读,可以使用类似cat 等命令查看文件内容. w : 可写,可以编 ...

最新文章

  1. iOS调试 LLDB使用
  2. 237. 删除链表中的节点(C语言)
  3. 命令行下从bak文件恢复sqlserver数据库方法
  4. GDIDrawing3——GDI+绘图(三)
  5. 使用Netbeans开发App Engine Java
  6. BZOJ 1968: [Ahoi2005]COMMON 约数研究 水题
  7. Java | ProGuard——java代码混淆利器
  8. python 断言详细讲解用法及其案例_python断言_python 断言_python断言案例 - 云+社区 - 腾讯云...
  9. 干货 | 互联网平台资金结算的合规处理方案
  10. 服务器先装系统还是先做热备,安装ibm服务器双机热备操作系统图文详细步骤.doc...
  11. 笔记本处理器排名_上半年最受欢迎处理器TOP10榜单:AMD终进榜,9代酷睿无缘前10...
  12. PHP网页的工作原理
  13. 台积电、高通“示好”华为:恢复供货?
  14. 腾讯云数据库SaaS致力于构建数据库分布式云,为更多更广的用户提供服务
  15. 《哲学史讲演录》——思辨节选---塞诺芬尼 、巴门尼德
  16. 重复行删除操作df.drop_duplicates和df.duplicated
  17. Qt Creator中如何指定某个项目为启动项目
  18. 开始入坑-大蟒蛇首发
  19. 【ML】逻辑回归适用场景-原理-优缺点汇总:
  20. 慕思披露招股书,智慧床垫能成为后来者追赶的助燃剂吗?

热门文章

  1. CentOS 查看日志命令
  2. 易班APP抓包自动打卡
  3. 腾讯笔试题——逆序对
  4. 圣诞节flash卡通短片
  5. 《Android移动应用基础教程》(Android Studio)(第二版)黑马教程 课后题答案 第11章
  6. 如何下载衡水市卫星地图高清版大图
  7. STM32CubeMx之SD卡驱动
  8. 遗传算法matlab_当结构设计遇到遗传算法应用ANSYS和MATLAB联合优化设计探索(二)...
  9. 【智能制造】36页精彩PPT:探讨智能制造的三驾马车
  10. 飞鸽传书2007绿色版还需要遵循些基本的原则