SuperCode登录业务讲解
1.先看业务流程图
2.因为是前后端分离项目所以用了Jwt进行用户状态的鉴权等。然后可能有有人问,在使用UUID,不就有点多此一举了吗?强行解释一波,因为有在线人员的管理功能(强踢),而如果单纯的使用Jwt进行鉴权,解析出来的用户ID,然后进行强踢,这样的话就会有一个问题:如果允许同一个账号允许多地同时登录的话,那就不知道该踢哪个用户的链接了,所以通过UUID来进行用户强踢功能,所以才有了UUID的生成逻辑.
3.用户登录的时候,生成UUID+Jwt字符串,保存到redis缓存中,在线用户列表就可以直接读取redis来获取对应的数据
4.UUID的另外一个存在的原因是:基于Jwt的过期策略,考虑到安全性问题,所以Jwt过期时间设置为了30分钟,所以如果用户长时间登录操作的话,就会遇到jwt的过期问题,基于这个问题,其实有很多操作方式
方式一:前端用户在请求的时候,如果返回是未登录状态,则自动请求下登录接口,在执行当前接口的数据获取,这样话用户体验可能会有卡顿问题
方式二:前端vue有一个定时器,进行刷新jwt的时间,这样才是真正的无感操作,如果后端拿到jwt进行延时的话,在反向更新redis中的jwt数据可能会很麻烦,所以此处用UUID来快速确认redis中的数据进行更新
以上是用户登录的业务逻辑,相对比较简单,所以此处大致记录下。如果有老铁有更好的方案,欢迎评论指教