单点登录详细设计 V1.0.0
研发 研发 12

单点登录详细设计 V1.0.0

变更历史
版本内容修改人日期
1.0.0单点登录详细设计甲蛙2099-01-01

1 需求描述

这里可以简要描述需求,或放入需求文档的链接*,方便随时查看详细设计对应的需求*

2 功能拆分

根据需求拆分成一个一个的功能点,功能点可以是界面,接口,集成某个技术等等。

单点登录功能点示例:

  1. 一个登录页面制作,界面
  2. 登录页面初始显示验证码,一个验证码接口
  3. 登录功能,一个登录接口
  4. 单点登录需要分布式缓存,集成redis
  5. 登录校验AOP

3 流程图

常见的有基本流程图,时序图,可以从前端串到后端,用不同的颜色表示。

3.1 生成验证码流程图

img

3.2 单点登录流程图:

img

4 接口设计

接口信息:描述、地址、请求方式、入参、出参。

处理逻辑:尽可能写得详细,读哪些配置,查哪张表哪个字段,甚至是写伪代码

4.1 验证码接口

4.1.1 接口信息

描述获取验证码图片
地址/admin/kaptcha /image-code/{imageCodeToken}
请求方式GET
入参参数名称类型说明
imageCodeToken验证码tokenString必填前端生成随机字符串
出参参数名称类型说明
验证码图片验证码图片图片返回一张图片

4.1.2 处理逻辑

  1. 前提:集成Kaptcha,引入Jar包,增加配置类
  2. 使用Kaptcha自带的方法createText生成字符串text
  3. 以imageCodeToken为key,以text为value,存入redis中,300秒过期
  4. 使用Kaptcha自带的方法createImage,将text生成一张图片,并返回

4.2 登录接口

4.2.1 接口信息

描述获取验证码图片
地址/admin/kaptcha /image-code/{imageCodeToken}
请求方式GET
入参参数名称类型说明
loginName用户名String必填
password密码String必填
imageCode验证码String必填
imageCodeToken验证码tokenString必填
出参参数名称类型说明
id用户IDString
loginName用户名String
name昵称String
token登录凭证String所有请求都带此token
resources权限资源List隐藏显示界面/按钮

4.2.2 处理逻辑

  1. 对传入的密码进行二次加密
  2. 验证码校验,根据传入的imageCodeToken,到redis中获取text,

​ a) 获取不到,报错返回:验证码已过期

​ b) 获取到后,与传入的imageCode作比较

​ i. 相等,继续往后

​ ii. 不相等,返回验证码错误

  1. 验证码校验通过后,删除redis中的imageCodeToken
  2. 登录校验,根据loginName获取用户信息

​ a) 获取不到,打日志:用户名不存在;报错返回:用户名不存在或密码错误

​ b) 获取到了,比较参数密码与数据库密码

​ i. 相等,登录校验成功

​ ii. 不相等,打日志:密码不对;报错返回:用户名不存在或密码错误

  1. 校验通过后,加载资源权限
  2. 组装用户登录信息LoginUserDto
  3. 生成唯一token,作为用户登录标识
  4. 以token为key,LoginUserDto为value,存入redis中
  5. 返回登录结果

5 页面设计

一般包含几方面的内容:

如何进入页面?

页面有哪些操作元素?

表单有哪些校验?

点击按钮做什么操作?

有哪些看不见的逻辑?

跟后端有哪些交互?

5.1 登录页面

5.1.1 页面展示

image-20231109232555171

5.1.2 处理逻辑

  1. 页面初始化后,调用验证码图片接口,显示验证码图片
  2. 用户名、密码、验证码非空校验
  3. 点击登录按钮时,对密码进行第一次加密,加密后再进行传输,调用登录接口

​ a) 登录成功,跳转到欢迎页面

​ b) 登录失败,弹出失败提示,刷新图片验证码

6 跑批设计

包括跑批的时间、周期、处理逻辑、关联跑批等

可以考虑下面几个问题:

数据量是否很大,是否需要分页?

跑批期间数据是否会更新?

多个跑批之间是否会有先后?

跑批失败如何重跑?

7 数据库设计

本次变更相关的数据库脚本

8 安全设计

数据加密、接口加签验签、前后端参数校验、常见的漏洞处理、敏感数据处理

9 性能设计

大数据量跑批,如每天的报表跑批

高访问量接口,如首页数据

大流量**接口,如文件上传

单点登录详细设计 V1.0.0
https://blog.xiqi.site/archives/1699543732798
作者
管理员
发布于
更新于
许可