权限设计-系统登录用户权限设计[通俗易懂]

权限设计-系统登录用户权限设计[通俗易懂]需求分析—场景假设需要为公司设计一个人员管理系统,并为各级领导及全体员工分配系统登录账号。有如下几个要求:1. 权限等级不同:公司领导登录后可查看所有员工信息,部门领导登录后只可查看本部门员工的信息,员工登录后只可查看自己的信息;2.访问权限不同:如公司领导登录后,可查看员工薪水分布界面,而员工则不能看到;3.操作权限不同:如系统管理员可以在信息发布界面进行增删改查发布信息

大家好,又见面了,我是你们的朋友全栈君。

需求分析—场景

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

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. 普通员工:
查找<
员工信息表.公司
标识==该用户.公司标识 && 
                                  员工信息表.部门
标识==该用户.部门标识 && 
                                  员工信息表.员工
标识==
该用户.公司标识
>的所有用户
   

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158631.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Java标识符的命名规则[通俗易懂]

    Java标识符的命名规则[通俗易懂]Java语言中,为各种变量、方法和类等起的名字称为标识符Java标识符的命名规则:应以字母、下划线、美元符开头后跟字母、下划线、美元符或数字Java标识符大小写敏感,长度无限制1.java中能用作标识符的有:26个英文字母(大、小写),数字,下划线,美元符号$。但是不能以数字开头。2.类名首个字母必须大写,多个单词组成的,每个单词首字母都要大写。3.方法名一般首个字母小写(构造…

  • 原生js可爱糖果数字时间特效

    效果展示:http://hovertree.com/texiao/js/35/数字采用漂亮的糖果皮肤设计效果图:代码如下:转自:http://hovertree.com/h/bjaf/o0yqj1l

    2021年12月28日
  • springcloud详细教程_史上最简单的画

    springcloud详细教程_史上最简单的画SpringCloudBus将分布式的节点和轻量的消息代理连接起来。这可以用于广播配置文件的更改或者其他的管理工作。一个关键的思想就是,消息总线可以为微服务做监控,也可以作为应用程序之间相互通讯。本文要讲述的是用AMQP实现通知微服务架构的配置文件的更改。一、准备工作本文还是基于上一篇文章来实现。按照官方文档,我们只需要在配置文件中配置spring-cloud-starter-bus-amq

    2022年10月25日
  • mysql索引是什么 优点和缺点_MySQL索引优缺点、使用原则及种类介绍「建议收藏」

    mysql索引是什么 优点和缺点_MySQL索引优缺点、使用原则及种类介绍「建议收藏」一、索引简介1、索引简介索引(Index)是帮助MySQL高效获取数据的数据结构。在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的。MyISAM和InnoDB存储引擎只支持BTREE索引,MEMORY/HEAP存储引擎支持HASH和BTREE索引。2、索引的优点A、提高数据检索效率,降低数据库的IO成本。B、通过索引对数据进行排序,降低数据排序的成本降低了CPU的消…

  • python基础系列教程——python基础语法全解

    python基础系列教程——python基础语法全解全栈工程师开发手册(作者:陈玓玏)python教程全解了解python1.了解PythonPython是一种解释型(这意味着开发过程中没有了编译这个环节)、面向对象(支持面向对象的风格或代码封装在对象的编程技术)、动态数据类型的交互式(可在命令行中通过Python提示符及直接代码执行程序)高级程序设计语言。2.Python标识符标识符由字母、数

  • idea 2021 激活码【永久激活】

    (idea 2021 激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~83WX2V0Y7T-eyJsaWNlbnNlSWQiOi…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号