设计要点:
- APP 和 小程序 的登录 token 不需要时效性,PC端的登录 token 需要时效性
- token 中不要加入到期时间,因为每次有效请求,都要更新 token 的到期时间, 如果把到期时间加入到 token 中,那么每次请求就要生成新的 token ,并且随同请求数据返回给客户端替换旧的 token,这样实在是太麻烦了,也没有必要吧~
- 可以把 token 保存在 redis 等缓存数据库中,设置记录的时效,每次请求就拿着 token 去 redis 查询,查询到数据就说明 token 是有效,查询不到就说明 token 过期了
- 也可以把 token 保存在 MySQL 等关系型数据库中,每次请求时拿着 token 去数据库创建时间(可以理解为 token 的有效起始时间),然后将当前系统时间减去 token 的创建时间,将时间差和 token 的有效期比对来判断是否过期,过期则删除该条记录,并告知前端登录过期
- 服务端最好要保存 token,那么前端传过来的 token ,服务端可以去数据库查询是否存在,存在则合法,不存在则不合法。当然服务端也可以不保存 token,把用户 ID 再加一些字符,按一定规则拼接后,然后通过某算法产生一个字符串作为 token,这样的 token其实机器人也是很难破解和伪造的