Web开发中的技术Cookie,Session,Token

在Web应用中,Http请求是无状态的。即:用户第一次发起请求,与服务器建立连接并登录成功后,为了避免每一次打开页面需要登录,就出现了Cookie和Session技术。
Cookie
  • Cookie是客户端保存用户信息的一种机制,用来记录用户的信息,也是实现Session的一种方式。Cookie存储的数据量有限,都是保存在浏览器中。不同的浏览器有不同的存储大小,但一般不超过4KB。因此Cookie只能存储一小段的文本信息。
  • 例如:登录网站,用户第一天输入用户名和密码进行登录,第二天有可能就直接打开。
Session
  • Session是另一种记录客户状态的机制,它是在服务端保存的数据结构(SessionID和Session内容,还有很多自定义的内容.如:用户基本信息、权限信息等等),这个数据可以保存在持久化数据库、Redis缓存库、文件中,用于跟踪用户的状态。
  • 客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端再次访问时只需要从该Session中查找该用户的状态即可。
  • 用户第一次登录后,浏览器会将用户信息发送给服务器,服务器会给此用户创建一个SessionId,并在相应内容(Cookie)中将该SessionId一起返回给浏览器,浏览器将这些数据保存到客户端本地。当用户再次发起请求时,浏览器会自动的把上次存储的Cookie数据自动的携带传给服务器。
  • 服务器接收到请求信息后,会通过浏览器请求的数据中的SessionId判断当前是哪个用户,然后根据SessionID在Session库中获取用户的Session数据返回给浏览器。
  • 如果说Cookie机制是通过检查客户身上的"通行证"来确定客户身份,那么Session机制就是通过检查服务器上的"客户信息明细表"来确认身份。Session相当于程序在服务器上建立了一份客户档案,客户来访的时候只需要查询客户档案表即可。
  • Session生成之后,只要用户继续访问,服务器就会更新Session最后访问的时间,并维护该Session。为防止内存溢出,服务器会把长时间没有活跃的Session从内存中删除,这个时间就是Session的超时时间。如果超过超时时间没有访问服务器,Session就会自动失效。
Token
  • Http请求都是无状态的形式对接(服务器不知道本次请求和上一次请求是否有关联,所以就有了Session,即服务端和客户端都保存一段数据,客户端每次发起请求都带着,这样服务器就知道客户端是否发起过请求请求)
  • Session的存储空间有限,频繁的查询数据库给服务器造成很大的压力。于是就有了Token应用的诞生。
  • Token是服务器端生成的一串字符串,以客户端进行请求的一个令牌。当客户端第一次访问服务端,服务器会根据传过来的唯一标识userId,应用一些算法,并且加上秘钥,生成一个Token,然后通过Base64编码将这个Token返回给客户端,客户端将Token保存起来。下次请求时,客户端只需要带上Token,服务器收到请求后,会用相同的算法和秘钥无验证Token。
  • 客户端每次向服务器请求资源的时候需要带着服务器端签发的Token。
  • 服务器端收到请求后,然后去验证Token,如果验证成功,向客户端返回请求的数据。
发布了18 篇原创文章 · 获赞 6 · 访问量 233

猜你喜欢

转载自blog.csdn.net/penerx/article/details/104181856