avatar

技术小站

老骥伏枥,日行千里

  • 首页
  • Java
  • Web
  • 框架
  • 微服务
  • 架构
  • 数据库
  • 中间件
  • 研发
  • 关于
Home 单点登录详细设计 V1.0.0
文章

单点登录详细设计 V1.0.0

Posted 2023-11-9 Updated 2023-11- 9
By 管理员
15~19 min read

单点登录详细设计 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 性能设计

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

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

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

研发
研发
License:  CC BY 4.0
Share

Further Reading

Jun 4, 2025

【Windows】ApifoxAppAgent开机启动项删除

✨ApifoxAppAgent 首先建议使用Geek Uninstaller卸载 卸载会检测软件残留痕迹并清除 然而在开机启动项仍然存在名为ApifoxAppAgent残留项

Jan 15, 2025

JetBrains新版本区域选择的坑

ja-netfilter 地址:https://jetbra.in/s JetBrains新版本(2024.2)在设置里添加了区域选择,具体在:Appearance & Behavior -> System Settings -> Language and Region -> Region 中设置。

Oct 8, 2024

腾讯自研Git客户端,助力每个人都可以轻松使用Git

工具介绍 UGit是一款腾讯自研的Git客户端,为了让每个人都可以轻松使用Git,从而提高开发效率和团队协作的流畅性。支持工蜂MR/CR,工蜂议题管理,另外对于Git的原生特性有着深度支持。 支持的系统 支持macOS 10.11+、Apple Silicon和Win64位系统。 核心功能介绍 便捷

OLDER

Linux终端环境配置

NEWER

xsync同步脚本的使用

Recently Updated

  • 【Windows】ApifoxAppAgent开机启动项删除
  • Proxy AI 配置第三方AI模型
  • Windows11 莫名端口占用,而又找不到占用应用的奇怪问题
  • Crack Sublime Text 4.2.0.0 Build 4200
  • 当 SSH 登录 CentOS 7 系统时认证缓慢的解决方案

Trending Tags

Halo 研发 工具 Linux 数据库 Java AI 象棋 Web Docker

Contents

©2025 技术小站. Some rights reserved.

Using the Halo theme Chirpy