详细设计-权限的校验|学习笔记

简介: 快速学习详细设计-权限的校验

开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术详细设计-权限的校验学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/80/detail/15935


详细设计-权限的校验

 

内容介绍:

一、需求分析的产出物

二、设计步骤和设计过程

三、校权限

 

一、需求分析的产出物

主要做的就是关于权限部分的详细设计。大家知道详细设计的起源就是 API 和 ER 图, API 是输入, ER 图是资源;即在 ER 图上完成整个系统的设计。

所以,上述两个东西是前端的需求分析的最主要的两个产出物;即需求分析最

后做出来的东西除了 API 和 ER 图以外,还有界面和报表的设计。

所以界面和报表的设计、 ER 图和 API ,是做完整个需求分析以后,得到的三个东西,它的顺序为: ER 图;界面设计; API 。

大家会发现在做 API 的时候会一直改动 ER 图,因为做 API 的过程中就会发现 ER 图的一些问题;做界面也会发现 ER 图的一些问题,但是今天省略了做报表和界面的过程。虽然将过程省略掉,但是对于后端设计的两个重要的产出物是在第一阶段就已经完成的。给大家的标准就是需求分析的两个重要的产出物,将它们作为大家设计和实现的一个标准。

 

二、 设计步骤和设计过程

基于这两个东西,就可以开始做详细设计。详细设计的 API ,在标准版的 API 中将权限部分的 API 打开。下图是权限部分所有的 API 。

image.png

对于设计而言,一定是先后的过程。在诸多的 API 中,需要挑选一个简单的入手;上节课有同学说从注册用户开始,先有用户才会有其他的;所以先做注册用户,再

做新建权限、新建角色,将用户和角色关联起来,之后在做其他的东西。

这么做的问题就是,该系统最关键的功能是校权限;发现校权限时出了问题,即可能是 ER 图数据错误,也可能是需要进行修改;所造成的结果是之前的数据不可用。

所以从简单的东西开始着手,就会面临这样的风险;因为在整个系统之间,最不确定的部分不是注册用户、新建角色、新建权限、用户和角色的关系、角色和权限的

关系,因为它们没有不确定因素;从基础上而言,它们也没有困难的地方。

所以大家要从确定的地方着手去做,但是大家会发现问题就出在这里:如果先做确定的东西,做完之后做不确定的东西时,发现出了问题后确定的东西就会被浪费掉。

所以从系统的先后顺序上来讲,课本上是从最简单的不依赖于其他功能的地方开始,做完最简单的不依赖于其他东西的功能,再做依赖于它的功能,这样做的好处是便于系统进行一步一步的测试,但它的前提是自己已经将设计想的非常非常清楚、没有问题,就可以由简单到困难,由单个的最不依赖于别人的功能开始到依赖于别人的功能,比如注册用户,它是最不依赖于其他东西的功能;包括新建的权

限、角色,从不依赖于其他东西的功能开始逐步往上做。

假设所有的设计都已经清楚、没有问题,但是如果设计没有存在的不确定因素,这样做也存在问题。

实际上,大部分设计的不确定性是主要的,即设计并不是一个确定性的工作;换句话说,大家一起做权限系统,就需要把设计做的确定,但是大家也没有办法在一开始就把所有的设计全部确定下来,即会做三次极限编程日,可以确定的是第一次极限编程日做什么;第一次极限编程日做完之后才可以确定第二次极限编程日做什么;因为第一次极限编程日做完之后会发现有问题(做软件开发一定会发现做的中间是有问题的),有了问题就需要去解决问题或和更正问题;也有可能是第一次极限编程日,大家做完设计、写完代码之后发现后面不能采用,就会被废弃掉。当然,大家要努力避免该情况出现,它的解决方案是挑最难的做;即在该权限系统中

间,最难的、最具有业务价值的部分是校权限。

因为前面的整个数据结构都是为了校权限而存在,所以要在极限编程日之前把校权限做完;也就是说今天的课完成它的初步设计,下次课看它的实现和测试,把校权限该部分做完。校权限部分做完之后,才会减少在极限编程日的不确定性;所以是在这节课把最难的部分做完以后,确定下节课要做什么的过程。

 

三、 校权限

所以,今天首要做的事情就是校权限。会发现权限部分所有的 API 中没有一个是校权限的,意味着校权限不会调 API ,它的原因是调 API 太慢。所以,校权限部分在整体的结构上是在前面的网关(整体的系统结构图)的地方进行校权限的;即一个用户进入以后,网关做的第一个事情是认证用户是谁,第二件事情是认证用户是否可以访问当前的 API ,如果可以访问,就会将用户放进去,进入到自己做的各个模块中;如果没有访问 API 的权限,就会将用户赶出去。所以 API 是在网关里调的,

之所以没有做校权限的 API 是因为进入网关以后,大家的模块不用去校权限;大家每一个模块的 API 前面只需要判断用户是谁即可。

既然是系统认证的用户,网关又将其放到这里调 API (所有东西认证、呼叫的来源都是只能从网关来的);或者说有些 API 是被内部使用的、另外一个模块使用的;

只要认证是一个正常的用户,就会认为该用户是有权限的。

比如,认证的用户是从网关来的,即在网关处有权限,就不会再进行校权限,直接

执行即可。

如果,在商品模块调的 API ,系统认证的用户从商品模块来,即在商品模块处是有权限的;所以各自的模块都不会去进行校权限,这样的目的是为了减少权限系统的压力。如果每个模块在调之前还要进行校权限,就会增大权限系统的压力,使权限

系统变慢,从而导致所有功能都变慢;所以 API 中没有校权限的 API ,但是要实现该功能。

相关文章
|
7月前
|
小程序 JavaScript 程序员
小程序最新标准授权登录流程+逻辑
小程序最新标准授权登录流程+逻辑
115 0
|
SQL 消息中间件 JavaScript
权限系统中的数据权限就该这么设计,yyds!
权限系统中的数据权限就该这么设计,yyds!
|
开发者
复核校验|学习笔记
快速学习复核校验
66 0
复核校验|学习笔记
|
安全 Java 数据安全/隐私保护
案例之权限相关测试|学习笔记
快速学习案例之权限相关测试
79 0
案例之权限相关测试|学习笔记
|
消息中间件 RocketMQ 开发者
校验订单流程分析|学习笔记
快速学习校验订单流程分析
134 0
校验订单流程分析|学习笔记
|
Java 数据安全/隐私保护 Spring
【自己设计权限控制】【网站的权限控制】【限制用户访问级别高的接口】
【自己设计权限控制】【网站的权限控制】【限制用户访问级别高的接口】
|
SQL 存储 数据库
数据权限这样设计,你觉得如何?
在项目实际开发中我们不光要控制一个用户能访问哪些资源,还需要控制用户只能访问资源中的某部分数据。 控制一个用户能访问哪些资源我们有很成熟的权限管理模型即RBAC,但是控制用户只能访问某部分资源(即我们常说的数据权限)使用RBAC模型是不够的,本文我们尝试在RBAC模型的基础上融入数据权限的管理控制。
2904 1
|
存储 JSON 安全
实际项目教学:身份/权限验证
实际项目教学:身份/权限验证
174 0
实际项目教学:身份/权限验证
|
Java Maven Spring
HibernateValidator校验框架
HibernateValidator校验框架
110 0
HibernateValidator校验框架
|
缓存 安全 JavaScript
极简权限认证必须掌握【代码+原理+建议收藏】
这个极简权限认证必须掌握,代码不过百,但是很关键
205 0
极简权限认证必须掌握【代码+原理+建议收藏】