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

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

开发者学堂课程【高校精品课-厦门大学 -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 ,但是要实现该功能。

相关文章
|
SQL JSON 数据可视化
权限开发手册,数据权限和接口权限配置
权限开发手册,数据权限和接口权限配置
1297 0
权限开发手册,数据权限和接口权限配置
|
6月前
|
存储 数据安全/隐私保护 索引
设计一个完美的用户角色权限表
设计一个完美的用户角色权限表
441 1
|
小程序 JavaScript 程序员
小程序最新标准授权登录流程+逻辑
小程序最新标准授权登录流程+逻辑
174 0
|
5月前
|
SQL Java 数据库连接
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
这篇文章介绍了在Spring Boot + MyBatis + Shiro项目中,如何使用Shiro框架实现登录用户的权限验证,包括用户、角色和权限表的设计,以及通过多个表查询来收集和验证用户权限的方法和代码实现。
springboot+mybatis+shiro项目中使用shiro实现登录用户的权限验证。权限表、角色表、用户表。从不同的表中收集用户的权限、
|
6月前
|
前端开发
codereview开发问题之无登录权限等校验的上传接口会带来问题如何解决
codereview开发问题之无登录权限等校验的上传接口会带来问题如何解决
|
JSON 安全 前端开发
Shiro整合JWT实现认证和权限鉴定(执行流程清晰详细)
一、前情提要 JWT:服务端根据规范生成一个令牌(token),并且发放给客户端(保存在客户端)。此时客户端请求服务端的时候就可以携带者令牌,以令牌来证明自己的身份信息。 Shiro:Java的一个安全(权限)框架,用户登录时把身份信息(用户名/手机号/邮箱地址等)和凭证信息(密码/证书等)封装成一个Token令牌,通过安全管理器中的认证器进行校验,成功则授权以访问系统.(详细描述可以参考文章:Shiro基础)
|
SQL 消息中间件 JavaScript
权限系统中的数据权限就该这么设计,yyds!
权限系统中的数据权限就该这么设计,yyds!
|
安全 Java 数据安全/隐私保护
案例之权限相关测试|学习笔记
快速学习案例之权限相关测试
案例之权限相关测试|学习笔记
|
前端开发 测试技术 数据安全/隐私保护