用户注册登录
一、用户注册
二、唯一性校验
通过代码查询判断账号唯一性是不够严谨的,当并发量达到一定程度的时候,分布式的应用下在同一时间段内获取到没有注册的用户,就会出现用户注册重复的情况。
解决方案:
唯一索引,只能插入同一条数据。最有效的方案
分布式锁,效率毕竟低,会对资源加锁,而且会出现各种分布式问题
三、用户登录
四、token信息
token信息需要包含ip、地理位置等等客户端信息,可以避免token被错误利用,这样能够在一定程度上防止token泄露等问题
五、token生成方式
- redis存储token:生成新的token,存放到redis当中。当下一次请求过来,主动刷新token(或者根据一定的时间判断刷新)。
优点:前端改动点少,当刷新了新的token,前端客户端刷新缓存即可。
缺点:用户信息需要通过redis进行验证,在大并发的情况下影响效率,服务端需要从redis获取又要解析token
- 去中心化:生成token令牌和refreshToken信息,token不存放到redis当中,将refreshToken存放到redis当中,前端监听token的过期时间,如果客户端还在请求,主动发送refreshToken到服务端获取新的token
优点:去中心化,服务端不需要依赖redis等中间件,只需要解析token到本地
缺点:前端逻辑比较复杂,需要通过一定的逻辑判断是否需要刷新token
