简介
这篇文章可作为方案设计文档参考,读者可根据需要自行修改格式。
单点登录功能详细设计文档 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. 性能设计
大数据量跑批,如每天的报表跑批
高访问量接口,如首页数据
大流量接口,如文件上传
今天的文章功能详细设计文档模板分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/25748.html