Token是为了解决什么问题而生的?
在Token机制之前,服务器端验证客户端请求是否合法主要是靠Cookie+Session机制来实现的。服务器端会为每个会话都生成一个Session,在高并发场景下会导致Session文件越来越多,不利于管理。 而Token是服务器端生成的一串加密字符串(具有生命周期),分配给客户端作为令牌使用,Token的好处就是减轻了服务器端的压力,因为Token是由客户端存储的,而且是无状态的。 Token的流程,可以通过分析登录的流程、退出的流程、置换token的流程分别讨论?登录的流程
- 用户发送登录请求
- 认证系统验证登录-查询数据库用是存在该用户
- 如果该用户存在,则生成Token存入Redis中,并将该Token返回客户端
- 如果该用户不存在则提示登录失败
验证Token
客户端- 将Token key附加至header
- 从header中取出Token key
- 通过Token key和Redis中的相关Token信息进行匹配
退出请求流程
- 前端发送退出请求
- 认证系统验证token信息-从Redis中查询相关Token信息
- 如果token无效,提示前端换取token失败
- 如果token有效,删除该token并提示前端退出成功
置换token的流程
以下讨论的就是token超时的解决方案 先说下后端处理流程:- 前端请求置换token
- 认证系统验证去redis验证相关redis信息
- token无效,则置换失败
- token有效,则从redis删除相关redis,并返回前端新的token
- 前端在登录成功后拿到token设置到cookie中
- 请求业务接口时获取token,并判断是否到了该换取token的时间段了
- 如果可以调用置换token接口,重新生成token,返回前端设置到cookie中
如需转载请保留本文出处: https://zhe94.com/773.html