功能详细设计文档模板

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 功能详细设计文档模板

简介

这篇文章可作为方案设计文档参考,读者可根据需要自行修改格式。

单点登录功能详细设计文档 V1.0.0

1. 需求描述

此功能用于用户登录,当用户进入页面页面时,首先会加载出一段验证码以及账号文本框、密码文本框、是否记住密码文本框(这就是介绍系统功能的入口),当用户输入账号密码验证码并点击登录之后,会检查账户密码是否输入规范,这就涉及到文本框空校验以及密码是否符合要求等判断。

若都符合要求之后,系统就会开始校验用户输入的信息是否正确,若账户、密码、验证码等有一环输入错误的,界面就会做出响应的响应信息,并提示用户重新输入。

若输入正确,则需要判断用户是否点击了记住密码文本框,若选择记住密码,则下次记住密码时无需再输入密码就可以完成直接登录。若没有记住密码则反之。

2.功能拆分

1. 制作一个登录界面
2. 登录界面需要实时渲染验证码,需要集成Kaptcha技术。
3. 一个获取验证码的接口
4. 登录接口
5. 单点登录校验验证码时,需要将用户输入验证码与用户点击登录时页面验证码进行比对,由于界面验证码实时刷新,所以我们需要想办法存住验证码,所以我们需要集成redis将密码进行缓存

3.流程图

:白色是前端流程,蓝色是后端流程

3.1页面加载时,获取验证码流程图

3.2登录流程图

4. 接口设计

4.1获取验证码接口

4.1.1接口
描述 获取验证码图片
请求地址 /admin/kaptcha /image-code/{imageCodeToken}
请求方式 GET
入参 参数 名称 类型 说明
imageCodeToken 验证码token String 必传,由前端生成,尽可能实现唯一
出参 参数 名称 类型 说明
验证码流数据 验证码图片 stream 一张图片的流数据
4.1.2处理逻辑
1. 前提“集成kaptcha,引入jar,增加配置类
  2. 使用kaptcha的createText生成验证码字符串
  3. 以imgToken为key,text为value存入redis中,设置市场为300s
  4. 使用kaptcha的createImage生成验证码图片

4.2 获取验证码接口

4.2.1 接口
描述 登录接口
请求地址 /admin/login
请求方式 POST
入参 参数 名称 类型 说明
loginName 用户名 String 必传
loginName 用户名 String 必传
password 密码 String 必传
code 验证码 String 必传
imgToken 验证码token String 必传,用于从redis中捞取密码
出参 参数 名称 类型 说明
id 用户ID String
loginName 账号 String
name 昵称 String
token 登录凭证 String
resource 权限资源 List

显示详细信息

4.2.2 处理逻辑
1.对传入的密码进行二次加密
2.验证码校验,根据传入的imageCodeToken,到redis中获取text,
  a)获取不到,报错返回:验证码已过期
  b)获取到后,与传入的imageCode作比较
    i.相等,继续往后
    ii.不相等,返回验证码错误
3.验证码校验通过后,删除redis中的imageCodeToken
4.登录校验,根据loginName获取用户信息
  a)获取不到,打日志:用户名不存在;报错返回:用户名不存在或密码错误
  b)获取到了,比较参数密码与数据库密码
    i.相等,登录校验成功
    ii.不相等,打日志:密码不对;报错返回:用户名不存在或密码错误
5.校验通过后,加载资源权限
6.组装用户登录信息LoginUserDto
7.生成唯一token,作为用户登录标识
8.以token为key,LoginUserDto为value,存入redis中
9.返回登录结果

5. 页面设计

一般包含几方面的内容:

如何进入页面?
    页面有哪些操作元素?
    表单有哪些校验?
    点击按钮做什么操作?
    有哪些看不见的逻辑?
    跟后端有哪些交互?

以及本功能为例,我们可以这样写:

一般包含几方面的内容:

如何进入页面?点击连接进入
    页面有哪些操作元素?账号框、 密码框、 验证码框、 记住我按钮、 登录按钮
    表单有哪些校验?非空校验、密码正则
    点击按钮做什么操作?验证码文本框、调用后端接口
    有哪些看不见的逻辑?校验
    跟后端有哪些交互? 获取验证码接口、获取登录接口

6. 跑批设计

包括跑批的时间、周期、处理逻辑、关联跑批等
  可以考虑下面几个问题:
  数据量是否很大,是否需要分页?
  跑批期间数据是否会更新?
  多个跑批之间是否会有先后?
  跑批失败如何重跑?

7. 数据库设计

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

8. 安全设计

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

以本次功能设计为例,这其中就涉及前端密码md5Salt加密

9. 性能设计

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

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

大流量接口,如文件上传


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2月前
|
数据可视化 数据库连接 测试技术
【软件设计师备考 专题 】编写外部设计文档:系统流程图和功能说明书
【软件设计师备考 专题 】编写外部设计文档:系统流程图和功能说明书
89 0
|
7月前
|
Web App开发 前端开发 JavaScript
网页前端项目评审参考标准
网页前端项目评审参考标准
52 0
|
1月前
|
设计模式 监控 架构师
如何在项目中考虑非功能需求
软件非功能需求包括性能、可靠性、安全性、易用性、可维护性、可移植性、兼容性、可重用性、可扩展性和可观察性。质量属性分为开发期和运行期,如易理解性、可扩展性、可测试性等是开发期质量,性能、安全性、易用性等是运行期质量。评估方法有ATAM(架构评估技术)、ADMEMS矩阵方法、SAAM(软件架构分析法)和CBAM(成本效益分析法)。ATAM包括建立评估小组、获取架构信息、风险承担者观点和形成最终报告四个阶段。
51 0
|
10月前
原型图总结规范
原型图总结规范
77 0
|
7月前
|
JSON 运维 项目管理
文档的重要性及接口文档模板
优质的文档不仅能提高工作效率,还能有效降低沟通成本,因此我们必须注重文档的撰写和格式。
354 1
文档的重要性及接口文档模板
|
7月前
|
存储 算法
详细设计说明书的内容要求
详细设计说明书的内容要求
|
编解码 安全 API
文档、白板功能模块集成说明|学习笔记
快速学习文档、白板功能模块集成说明。
137 0
文档、白板功能模块集成说明|学习笔记
|
XML 数据格式
工作流 自定义表单 挂靠流程 模块设计方案
工作流 自定义表单 挂靠流程 模块设计方案
235 0
工作流 自定义表单 挂靠流程 模块设计方案

相关实验场景

更多