同福

做个用户管理系统(38)——经验总结之功能模块的设计要点【20201229】

介绍

介绍

福哥带着大家花费了将近40天的时间终于完成了TFUMS系统的开发。这个TFUMS系统是福哥带着大家完成的第二个PHP语言的项目,第一个PHP语言的项目是TFPHP框架。并且这个TFUMS系统是基于我们前面开发的TFPHP框架开发的。

福哥想问问大家,这种从零开始的感觉是不是很爽啊?

一般人带着做项目都是基于一些开源的框架进行的,而福哥带着做项目就不一样了,福哥连框架的开发都教给大家了,是不是很过瘾啊?

今天福哥想带着大家将我们刚刚完成的TFUMS系统的各个功能模块进行一次梳理,孔夫子曰过:温故而知新,可以为师矣~~

功能模块

TFUMS项目包括了用户注册功能、登录功能、修改个人资料功能、设置用户填写功能、修改密码功能、绑定邮箱功能、设置安全问题功能以及忘记密码功能。其中忘记密码功能是一个比较复杂的多级表单功能,里面涵盖了认证方式选择、通过绑定邮箱重置密码、通过安全问题重置密码几个子功能。

技术要点

开发TFUMS系统用到了很多技术,我们来一一回顾一下。

  • 验证码:涉及到了随机数生成、图像处理、MD5哈希算法等等

  • 用户登录:用到了MySQL、Redis和Cookie配合的技巧

  • 修改个人资料:用到了字典库,掌握了ID、Code、Label的转换技巧

  • 用户头像:用到了GD图形库的图像加工功能

  • 绑定邮箱:用到了发送Email的功能

  • 忘记密码:用到了AES算法的使用,Redis临时状态码的使用

功能模块设计要点

用户登录

  • 判断所有参数合法性

  • 检验图形验证码

  • 判断用户账户是否存在

  • 判断用户状态是否正常

  • 判断登录密码是否正确

  • 存储Token的Redis数据必须设置合理的有效期

  • 登录状态Cookie的路径是项目根目录

用户注册

  • 判断所有参数合法性

  • 判断用户名不能为邮箱地址或者手机号码

  • 判断确认密码是否正确

  • 检验图形验证码

  • 判断用户账户是否被占用

  • 写入user主表和所有附属表,密码字段使用MD5加密

  • 存储Token的Redis数据必须设置合理的有兴趣

  • 登录状态Cookie的路径是项目根目录

用户状态

  • 不要将密码、用户状态、注册时间等等敏感信息泄露出去

修改密码

  • 判断所有参数合法性

  • 判断确认密码是否正确

  • 判断用户是否存在,且状态是否正常

  • 判断原登录密码是否正确

修改个人资料

  • 判断所有参数合法性

  • 判断用户是否存在,且状态是否正常

  • 表单数据载入注意敏感信息泄露问题

设置头像

  • 判断所有参数合法性

  • 判断用户是否存在,且状态是否正常

  • 对上传图片进行压缩处理

  • 确保旧图片已经删除掉了

  • 确保新图片正确保存了

绑定邮箱

  • 判断所有参数合法性

  • 判断用户是否存在,且状态是否正常

  • 使用正确的SMTP信息给用户发送激活邮件,激活邮件内的链接需要是完整的URL地址

  • 激活码需要有时效性,激活码需要可逆,激活码需要有密钥

  • 确保绑定邮箱只能操作一次(以后改版有可能调整设计)

设置安全问题

  • 判断所有参数合法性

  • 判断用户是否存在,且状态是否正常

  • 确保选择过的问题不要出现在其他问题选项里面

  • 确保每个问题都有填写答案

  • 确保安全问题只能操作一次(以后改版有可能调整设计)

忘记密码

  • 判断所有参数合法性

  • 判断用户是否存在,且状态是否正常

  • 用户名可以是邮箱地址或者用户名,根据这个唯一的数据定位用户

  • 只给出可选的验证身份方式,不要任何安全保护信息(如:绑定邮箱、安全问题等等)

  • 使用AES生成加密串,避免用户伪造验证身份方式信息

通过绑定邮箱重置密码

  • 使用AES加密串解密得到可用验证身份方式是否包括绑定邮箱方式

  • 判断绑定邮箱是否可用

  • 使用正确的SMTP信息给用户发送验证邮件,验证邮件内的链接需要是完整的URL地址

  • 验证码需要有时效性,验证码需要可逆,验证码需要有密钥

  • 使用验证码重置密码不需要原密码,但要做好验证码作废处理,避免反复操作

通过安全问题重置密码

  • 使用AES加密串解密得到可用验证身份方式是否包括绑定邮箱方式

  • 判断安全问题是否可用

  • 判断安全问题的答案是否正确,生成新的重置密码专用验证码

  • 验证码需要有时效性,验证码需要可逆,验证码需要有密钥

  • 使用验证码重置密码不需要原密码,但要做好验证码作废处理,避免反复操作

效果

这里福哥再放出一张TFUMS的操作界面图,这是设置用户头像的表单。眼尖的童鞋应该发现了,哎?怎么在顶部的导航栏里还有一个小图标啊?这是这么回事?

a76adbaa5486e8ef.jpg哈哈哈,这是福哥后面加的功能,把用户头像展示到了顶部导航栏里面了。这样看起来是不是漂亮多了?回头福哥带着大家继续完成TFUMS系统的功能的时候会教给大家的~~

总结

今天福哥带着大家将TFUMS v1.0版本的全部功能的要点梳理了一遍,大家是不是感觉这一个多月是项目开发过程又像幻灯片一样播放了一遍呢?孔夫子曰过:温故而知新,说的就是学完了要总结才能真正学会,才能悟出新的东西来。