登录校验流程

短信验证码

发送短信验证码流程:首先一开始用户在前端提交手机号,我们后端会校验这个手机号,我们有一个后端接口校验手机号是否合法,其实我们前端也针对手机号做校验,但有时候可能用户会用一些postman工具绕前端的一个检测,所以我们前端,后端都做了手机号校验,校验格式是否正确?如果这个手机号的格式正确,那我们就发送验证码。

这个发送验证码,我们公司专门抽取了一个通信微服务。把一些短信发送短信认证,视频,音频,审核这些功能,都放到一个单独的三方服务里面。这个时候我的会员服务会通过远程调用工具,调用这个通用三方服务,去发送短信验证码,在第三方服务那里,会生成一个验证码,一方面把这个短信推送到一个消息队列mq中,另一方面把这个验证码存放到session里面

其中这个验证码,生成验证码,我们是放到mq以后呢有一个专门的这个短信监听的消费者去监听这个消息队列。得到消息以后,把它调用阿里云的短信市场里面的服务去发送短信。目的是为了解耦,因为以后我们可能会解耦青牛云,包括一些其他的短信服务提供商,所以我们使用mq做了解耦。另外我们会把这个验证码放到session里面,其实这个session我们使用spring-data-redis整合,将session数据放到了redis,结束流程,响应前端发送成功

登录

登录流程,用户在前端页面登陆时,会提交验证码,手机号,可能包括一些别的信息,比如说我们的项目中就提交三种数据,一个是手机号,一个是验证码,一个是是否记住,就是下次是否免密登录。这三个数据提交到后端接口以后,后端接口中首先校验手机号是否正确?校验验证码是否正确?校验手机号对应的用户是否存在?如果存在把它存到session里面。如果不存在,则自动创建新用户,把新用户存到数据库。再把用户的信息也保存在session。然后我们使用JWT生成Token,返回给前端,前端以后访问的时候,带上Token,作为用户的唯一标识。

校验

校验流程,用户登录成功以后,以后每次访问的话都会在请求头里面,把之前返回的token再次携带过来,那我们就会判断,是否有这个token?如果有token的话,我们会校验token这个签名是否遭到篡改,如果没有的话,证明用户信息正确。从session(其实它就是redis)取出来用户的数据,放到threadlocal中,这样我们可以随时随地地从ThreadLocal取出来用户数据了。如果校验失败的话,证明Token过期或者被篡改,则直接返回认证失败,前端自动跳转到登录页面

你可能感兴趣的:(java,前端)