简介

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

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

大数据量跑批,如每天的报表跑批
高访问量接口,如首页数据
大流量接口,如文件上传

功能详细设计文档模板相关推荐

  1. 如何撰写产品需求文档_需求文档模板(产品功能类需求篇)

    前言 需求文档在产品整个开发过程中至关重要,设计根据需求考虑交互功能.需求沟通评审和开发.测试验收标准.文档知识沉淀问题记录等过程都依赖规范完整的需求文档,除功能内容全面外,整洁.易读也是需求文档的重 ...

  2. 《信息化项目文档模板五——系统详细设计模板》

    系列文章目录 <信息化项目文档模板一--项目需求说明书> <信息化项目文档模板二--项目启动会文档模板> <信息化项目文档模板三--会议纪要模板> <信息化项 ...

  3. 架构实战:架构设计文档模板

    在前面的专栏里,有同学留言说想看看具体的架构设计文档.由于信息安全的原因,再加上稍微复杂的系统,设计文档都是几十页,因此专栏无法直接给出详细的文档案例.但我认为提供一个架构设计文档模板还是很有必要的, ...

  4. VC++ 多文档模板(添加新文档模板)编程实例

    现在假设要做一个VC++多文档程序,一个文档类型处理txt文件,一个文档类型处理图片文件: 新加一个Img的文档模板类型: 先新建一个多文档工程,名为duodocDemo1: 在菜单选择 插入-类: ...

  5. 十三种技术文档模板_竞品分析|关于产品规划的思考:石墨文档 VS 腾讯文档 VS金山文档...

    作者以在线协作文档行业领先的石墨文档.腾讯文档和金山文档为例进行了了竞品分析,通过对几款产品全方位的分析,总结了自己关于石墨文档产品规划的思考. 一.竞品概述 1. 竞品目的 2. 竞品目的 通过对石 ...

  6. 数据仓库应用篇(一)需求文档模板和需求评审

    一.需求文档模板 1.产品需求文档:文档标识.产品概述.功能说明.全局说明.非功能性需求等 2.交互设计文档(DRD): 3.报表需求文档: 1)业务数据: 业务场景.指标名称.指标定义.维度.维度定 ...

  7. 项目总结(打开一个新页面下载exsel表格或者文档模板)

    以前在点开点击下载模板 这样类偶似的页面按钮时总是会跳转到一个页面(这个页面一闪而过),然后是底部下载的exsel表格或者是文档模板,这时页面展示的还是原来的点击下载模板 这个页面,这个页面的下面展示 ...

  8. 《信息化项目文档模板十一——系统运维流程工作流程模板》

    系列文章目录 <信息化项目文档模板一--项目需求说明书> <信息化项目文档模板二--项目启动会文档模板> <信息化项目文档模板三--会议纪要模板> <信息化项 ...

  9. 《信息化项目文档模板四——系统建设方案模板》

    系列文章目录 <信息化项目文档模板一--项目需求说明书> <信息化项目文档模板二--项目启动会文档模板> <信息化项目文档模板三--会议纪要模板> <信息化项 ...

  10. 《信息化项目文档模板二——项目启动会文档模板》

    系列文章目录 <信息化项目文档模板一--项目需求说明书> <信息化项目文档模板二--项目启动会文档模板> <信息化项目文档模板三--会议纪要模板> <信息化项 ...

最新文章

  1. Microsoft RTF栈溢出漏洞(CVE-2010-3333)漏洞分析
  2. SpringBoot中定义全局异常处理器
  3. 云原生系列「三」容器网络
  4. Mysql 死锁过程及案例详解之显式与隐式锁Explicit Table Lock Implicit Table Lock
  5. linux twiki 添加权限,Linux安装TWiki
  6. android 手机获取公网ip_KSWEB 旧手机搭建网站服务
  7. 性能为MySQL 10倍!阿里云推出云原生数据仓库AnalyticDB基础版
  8. 班图ubuntu linux 5.1相当好用,windows危险了!
  9. php下列列表如何赋值,php学习笔记之list()赋值问题及each()结合遍历
  10. php输出字符unicode码,PHP解码unicode编码的中文字符代码分享
  11. 软件无线电在4G技术的应用
  12. 工业非标设备远程运维方案
  13. 推荐 System Repair Engineer(SREng)2.4.12.806 版本
  14. Livezilla安装配置, APE(Ajax Push Engine)安装配置
  15. c语言程序发生算术溢出,谈谈C语言的溢出
  16. 红包达人app是真的吗,红包达人怎么玩?红包达人官方下载最新最全教程
  17. 利用echarts做图表统计
  18. Python 批量修改文件名称
  19. 可视化 | Echarts基础异步加载数据交互组件数据集
  20. 响应式设计中怎样布局?

热门文章

  1. 2021非科班生的Java面试之路,java思维导图笔记
  2. AudioTrack播放acc格式音频
  3. 最新可乐云商城程序源码V0.6版本 可做实物商城网站
  4. 仿小米商城html网页源码
  5. 软件工程的极端所有权
  6. 计算机网络连接图标 红叉,Win10网络图标显示红叉叉 检测不到网卡驱动解决方案...
  7. EDA技术实用教程 | 复习九 | 数据选择器的行为级描述
  8. Windows 8 系统安装
  9. 你们要的国内会议来了!部分截稿时间临近,入群享快速投稿服务
  10. windows10 显示实时网速