功能详细设计文档模板
简介
这篇文章可作为方案设计文档参考,读者可根据需要自行修改格式。
单点登录功能详细设计文档 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中,设置市场为300s4. 使用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. 性能设计
大数据量跑批,如每天的报表跑批
高访问量接口,如首页数据
大流量接口,如文件上传
功能详细设计文档模板相关推荐
- 如何撰写产品需求文档_需求文档模板(产品功能类需求篇)
前言 需求文档在产品整个开发过程中至关重要,设计根据需求考虑交互功能.需求沟通评审和开发.测试验收标准.文档知识沉淀问题记录等过程都依赖规范完整的需求文档,除功能内容全面外,整洁.易读也是需求文档的重 ...
- 《信息化项目文档模板五——系统详细设计模板》
系列文章目录 <信息化项目文档模板一--项目需求说明书> <信息化项目文档模板二--项目启动会文档模板> <信息化项目文档模板三--会议纪要模板> <信息化项 ...
- 架构实战:架构设计文档模板
在前面的专栏里,有同学留言说想看看具体的架构设计文档.由于信息安全的原因,再加上稍微复杂的系统,设计文档都是几十页,因此专栏无法直接给出详细的文档案例.但我认为提供一个架构设计文档模板还是很有必要的, ...
- VC++ 多文档模板(添加新文档模板)编程实例
现在假设要做一个VC++多文档程序,一个文档类型处理txt文件,一个文档类型处理图片文件: 新加一个Img的文档模板类型: 先新建一个多文档工程,名为duodocDemo1: 在菜单选择 插入-类: ...
- 十三种技术文档模板_竞品分析|关于产品规划的思考:石墨文档 VS 腾讯文档 VS金山文档...
作者以在线协作文档行业领先的石墨文档.腾讯文档和金山文档为例进行了了竞品分析,通过对几款产品全方位的分析,总结了自己关于石墨文档产品规划的思考. 一.竞品概述 1. 竞品目的 2. 竞品目的 通过对石 ...
- 数据仓库应用篇(一)需求文档模板和需求评审
一.需求文档模板 1.产品需求文档:文档标识.产品概述.功能说明.全局说明.非功能性需求等 2.交互设计文档(DRD): 3.报表需求文档: 1)业务数据: 业务场景.指标名称.指标定义.维度.维度定 ...
- 项目总结(打开一个新页面下载exsel表格或者文档模板)
以前在点开点击下载模板 这样类偶似的页面按钮时总是会跳转到一个页面(这个页面一闪而过),然后是底部下载的exsel表格或者是文档模板,这时页面展示的还是原来的点击下载模板 这个页面,这个页面的下面展示 ...
- 《信息化项目文档模板十一——系统运维流程工作流程模板》
系列文章目录 <信息化项目文档模板一--项目需求说明书> <信息化项目文档模板二--项目启动会文档模板> <信息化项目文档模板三--会议纪要模板> <信息化项 ...
- 《信息化项目文档模板四——系统建设方案模板》
系列文章目录 <信息化项目文档模板一--项目需求说明书> <信息化项目文档模板二--项目启动会文档模板> <信息化项目文档模板三--会议纪要模板> <信息化项 ...
- 《信息化项目文档模板二——项目启动会文档模板》
系列文章目录 <信息化项目文档模板一--项目需求说明书> <信息化项目文档模板二--项目启动会文档模板> <信息化项目文档模板三--会议纪要模板> <信息化项 ...
最新文章
- Microsoft RTF栈溢出漏洞(CVE-2010-3333)漏洞分析
- SpringBoot中定义全局异常处理器
- 云原生系列「三」容器网络
- Mysql 死锁过程及案例详解之显式与隐式锁Explicit Table Lock Implicit Table Lock
- linux twiki 添加权限,Linux安装TWiki
- android 手机获取公网ip_KSWEB 旧手机搭建网站服务
- 性能为MySQL 10倍!阿里云推出云原生数据仓库AnalyticDB基础版
- 班图ubuntu linux 5.1相当好用,windows危险了!
- php下列列表如何赋值,php学习笔记之list()赋值问题及each()结合遍历
- php输出字符unicode码,PHP解码unicode编码的中文字符代码分享
- 软件无线电在4G技术的应用
- 工业非标设备远程运维方案
- 推荐 System Repair Engineer(SREng)2.4.12.806 版本
- Livezilla安装配置, APE(Ajax Push Engine)安装配置
- c语言程序发生算术溢出,谈谈C语言的溢出
- 红包达人app是真的吗,红包达人怎么玩?红包达人官方下载最新最全教程
- 利用echarts做图表统计
- Python 批量修改文件名称
- 可视化 | Echarts基础异步加载数据交互组件数据集
- 响应式设计中怎样布局?