我的云盘叫UPPAN。学习一段时间的Python和Flask框架,因为我认为Flask框架很轻量化,好东西都可以自己写。目前我开发了一段时间,只实现了登陆和注册的功能。首先这个项目我采用的是前后端不分离来完成。但是有的部分还是有点分太开了。因为表单的提交是使用的XMLHttpRequest来发的表单。同时表单中使用flask_csrf来防止csrf攻击。
登陆


既然是登陆的话,那肯定就要先注册,我这里的表单是自己写的,不是用flask_wtf库来生成的,自己的话方便维护。表单提交这一块都接入腾讯云验证码进行无感验证。具体怎么操作呢我后面再写一篇文章。
前端
前端对用户输入的用户名、邮箱、密码进行校验。
- 对用户名长度进行校验(4-10位)
- 对用户名格式进行校验 (不能包含空格和特殊字符、中文)
- 对邮箱格式进行验证 (是一个正常的邮箱)
- 对密码格式进行验证(只对长度进行验证)
登陆的时候不需要验证密码的复杂度,因为注册的时候会验证密码复杂度,否则不通过。同时后端也对用户名和邮箱进行二次验证通过后才能登陆。
后端
格式验证通过后,去数据库查询该用户名或邮箱,后端要对用户名和邮箱进行区分,如果是用户名则查询用户名校验密码,如果是邮箱则查询邮箱进行校验密码。用户名不存在或者密码错误,统一做账户密码错误处理。当然数据库的密码都是加密的。
注册


注册功能我这里用的是用户名和邮箱来注册。我看别人都是注册账户直接是设置用户名、邮箱、手机号、密码,这里我只用设置用户名和邮箱。同样的跟登陆一样校验用户名和邮箱格式是否正确。其中还有很多细节处理。
前端
前端对用户输入的用户名、邮箱进行校验。
- 对用户名长度进行校验(4-10位)
- 对用户名格式进行校验 (不能包含空格和特殊字符、中文)
- 对邮箱格式进行验证 (是一个正常的邮箱格式)
后端
格式验证通过后,去数据库查询该用户名或邮箱,是否存在该用户名和邮箱,存在就返回用户名已被占用,邮箱存在就返回该邮箱已注册。同时校验邮箱是否真实存在,通过验证邮箱mx解析来确定是否存在,全部通过发送设置密码的链接到该邮箱。

这里的注册链接类似于http://127.0.0.1/confirm/7b9f34f244827a2eeceff375e9a692e5这样的,后面是7b9f34f244827a2eeceff375e9a692e5后端生成的唯一令牌,把令牌和对应的用户邮箱写入到缓存(redis)中设置过期时间,当用户点击这个设置密码的链接,后端会设置一个基于tokon的临时的会话,用来标识设置该对应用户名和邮箱账户的密码来完成注册。一样前端验证两次密码的复杂度和两次密码是否一致。后端再进行二次验证。校验完成后从缓存中取出用户名邮箱和密码一起写入数据库完成注册。
最后
这里只提供一个我完成这个功能思路,详细代码后续我会放出来。有什么不懂的可以问我。