浅析token

      上一章节我们学习了cookie和session机制,但是他们都有一些缺点,所有这次我们来了解一个机制---token。

一、cookie和session的缺点

      cookie信息存储在客户端浏览器上,安全性较低,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。

      session中服务器需维护用户的会话状态信息,这导致了服务器资源的占用和开销增加。水平扩展困难。而且如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。

二、什么是token?

1、概念

       Token(令牌)是在计算机系统中用于进行身份验证和授权的一种机制。它是一个特定的字符串,用于标识用户、应用程序或其他实体的身份和权限。

2、token验证原理

浅析token_第1张图片

  • 当用户登录系统时,系统会验证用户的凭据(如用户名和密码)。
  • 验证通过,然后为该用户颁发一个令牌。这个令牌可以是一个随机生成的字符串,也可以是基于加密算法生成的。令牌通常包含有关用户身份的信息,如用户ID、角色、权限等。
  • 此后系统可以在令牌有效时间内,根据令牌中的权限信息来判断用户是否有权进行请求的操作,无需再次带上用户的凭据(如用户名和密码)。

3、token特点

  (1)唯一性:每个令牌都是唯一的,用于标识特定的用户或实体。

  (2)时效性:令牌通常具有有效期限制,一旦超过有效期,令牌将失效,需要重新进行身份验证。

  (3)安全性:令牌可以采用加密算法进行签名,以保证其完整性和安全性,防止被篡改或伪造。

    (4)无状态性:令牌是一种无状态的认证方式,服务器不需要在后端维护用户的会话状态,使得服务器更容易扩展和水平扩展。

    (5)跨域支持:令牌可以方便地在不同的域名或跨域请求中传递和验证,提供了更灵活的身份验证机制。

4、cookie,session和token的区别

方式 存放地方 安全性 其他
cookie 客户端 不安全 数量有限制
session 服务器 相对安全 依赖于Cookie实现
token 客户端 相对安全 每个请求都有签名还能防止监听以及重放攻击

你可能感兴趣的:(java,前端,服务器)