初识token

token是一种计算机术语。叫做令牌

起源

  1. 因为有些场景下,客户端需要频繁地向服务器请求数据,
  2. 服务器就也同样需要频繁地向数据库去查询用户的账号密码做对比,
  3. 然后根据判断的结果,给出不同的提示/反馈。
    所以诞生了token

定义

token是由服务端产生的一串字符串,
然后把这个字符串当作客户端进行请求的一个令牌。

流程

  1. 客户端第一次使用用户名和密码来登录
  2. 服务器收到用户登录的请求之后,去验证用户名与密码
  3. 如果验证通过,那么服务器会产生一个token,然后把这个token返回给客户端
  4. 客户端拿到了这个token之后,可以把它放到cookie/local storage里面保存起来。
  5. 总之以后客户端再来请求数据的时候就只需要携带这个token就可以了。就不用再每次提交用户名和密码。
  6. 从此之后,服务器如果收到了客户端的请求,就会去验证客户端请求里面带着的token,如果验证通过,就向客户端返回数据。就不需要再像第一次一样要访问数据来对比用户名和密码。

好处/目的

使用token,就是为了能减轻服务器的压力。
可以让服务器不用频繁的查询数据库。增强服务器的健壮性。

使用方式

1.(推荐使用)设备号/设备MAC地址作为token

  • 也就是客户端在登录的时候,获取设备的设备号/mac地址,然后作为参数传递到服务端
  • 服务端接收到参数之后,用一个变量来接收它,并把它作为token保存到数据库。
    并且把这个token设置在session中,客户端的每次请求都会被统一拦截。
    然后把客户端传递的token和服务器端session中的token进行对比。
    如果相同则放行,不同则拒绝。
  • 这时候客户端和服务器端就统一了一个唯一标识token,并且每一个设备都有一个唯一的会话。
缺点
  • 缺点就是客户端需要拿自己的设备号/mac地址作为参数传给服务器,服务器还需要保存这个参数
  • 如果网络不好/并发请求高的时候就可能会重复提交数据(可以把token放入到session中来验证是否重复提交,因为session只能有一个对象)
优点
  • 优点就是客户端不需要重新登录,一次登录之后就可以一直使用。
  • 如果有超时的问题,就让服务器来解决。
  • 解决方法就是,如果服务器的token超时了,那么服务器只要把客户端传递的token向数据库中查询,同时赋值给token,这样token就会重新计时。

2.用session值作为token

  • 这种方式下,客户端只需要携带用户名和密码就可以
  • 然后服务器接收到用户名密码之后进行判断,判断通过了之后就将本地获取的sessionID作为token返回给客户端,客户端以后访问只需要携带请求数据就可以。
好处

不需要存储数据,更加方便

缺点

如果session过期了,就需要重新登录

posted @ 2021-03-02 10:13  张三丰学Java  阅读(294)  评论(0编辑  收藏  举报