上次面试被问到登录模块是如何实现的,因为当时刚学习了如何在短信登录中加入redis缓存的机制。
于是我就回答到是短信登录,接着想说这个短信登录的流程
结果面试官立马问没有账户密码登录吗
因为确实这个demo没有实现账户密码登录,我就直接回答了没有
然后面试官就说:哦哦,这只是个demo啊,那我就不问项目相关的了。
随即开始问了一堆八股文
(面试结束之后,我想,一个系统怎么可能没有账户密码登录啊?我真是个大笨蛋)
登录实现流程基本如下:
参考博客链接
我简化一下:(不知道下次面试这样说行不行)
第一步,先校验一下用户输入的手机号码格式是否正确()
并将密码用公钥进行加密(或者MD5加密)
第二步,前端调用后端登录接口,向后端发起登录 请求
第三步,后端收到登录之后,来查询数据库中是否有相应账号,以及密码是否是正确的(如果验证没有通过就返回错误信息)
第四步,通过验证之后就将成功信息和token一起发送给前端
第五步,前端会将这个token储存起来,每当用户进入需要登录的页面时就向后端发送token
第六步,如果登录时间过期了,就会清除用户信息,回到未登录状态。
流程图可以参考这篇博客