简介

Token 是一个临时、唯一、保证不重复的令牌

  1. Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。

  2. Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

  3. 使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

实现思路

UUID具有上述的特性,所以我们可以使用UUID作为token,生产UUID后放入Redis,设置Redis的过期时间。

Token的SessionID

token和SESSIONID非常的相似,但是SESSIONID在分布式项目中不能共享,虽然SESSION可以通过Redis等技术实现共享,但是使用这类技术会降低项目的性能和可用性。所以现在普遍使用Token代替Session使用。

简单的Token实现思路

  1. 验证用户的账号密码
  2. 如果正确,生成UUID作为Key
  3. 将此Key作为Key,将用户信息作为Value,存入Redis
  4. 最后返回Token给客户端,客户端将Token保存到Cookie中
  5. 用户在每次请求时,都会携带此Token,后端在拦截器中校验Token是否存在,如果存在找到对应的用户信息,判断其有哪些权限。

Token优点

  1. 可以通过Header、Body提交,实现跨域操作
  2. 可以隐藏参数的真实性,实现参数的脱敏
  3. 临时、唯一

存在问题:

  1. 使用Token,必须依赖Redis和Cookie
  2. 需要频繁操作Redis
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐