token详解

服务器 0

token详解

  • 前言
  • 什么是token?
  • 为什么要使用token?
  • 那么如何使用token呢?
    • 使用Token进行身份验证和授权的过程
    • 具体步骤
  • 项目上如何运用的token
    • token过期了什么办?
  • 总结
  • 升华

前言

本篇博客主要从什么是token?为什么要使用token?如何使用token?项目实例这几个方面讲解token,通过本篇博客能够对token能够有更深入的理解,并且有思路应用在具体项目中。

什么是token?

Token 在计算机身份认证中是令牌的意思,表示执行某些操作的权利的对象。通俗的意思是token是身份的象征,有了这个token了你就能有权利做些什么事。

token是在服务器端产生,如果前端使用用户名密码向服务端请求认证,服务端认证成功,那么服务端就会返回Token给前端。前端可以在每次请求的时候带上Token来证明自己的合法地位。

为什么要使用token?

从上面token的定义中我们可以看出token可以进行用户身份鉴权认证。

  1. 提高安全性:Token可以防止未经授权的用户访问受限资源。使用Token进行身份验证和授权可以避免传统的基于Cookie和Session的身份验证方式带来的一些安全风险,例如CSRF攻击和会话劫持等。

  2. 减少服务器负担:使用Token可以减轻服务器的负担,因为服务器无需保存用户的身份信息和状态信息。相反,每次请求中都包含了Token,服务器只需要对Token进行验证即可判断用户的身份和权限。

  3. 提高性能:使用Token可以减少网络传输和服务器的负载,因为Token可以被存储在客户端,客户端在每次请求时将Token带到服务器,而不需要每次请求都要传递身份信息和状态信息。

那么如何使用token呢?

使用Token进行身份验证和授权的过程

  1. 用户提供用户名和密码进行登录。
  2. 服务器验证用户名和密码的正确性,如果验证通过,则生成一个Token,并将Token返回给客户端。
  3. 客户端保存Token,并在以后的每次请求中都将Token携带到服务器。
  4. 服务器在接收到请求时,会对Token进行验证,以确定该请求是否被授权。
  5. 如果Token验证通过,则服务器处理请求,并返回所请求的资源或操作的结果。
  6. 如果Token验证失败,则服务器返回一个未授权的错误响应,客户端需要重新进行身份验证或者刷新Token。

具体步骤

  1. 生成Token:服务器在用户登录成功后,会生成一个Token,并返回给客户端。Token一般是一串加密的字符串,包含用户的身份信息和权限信息等。
  2. 保存Token:客户端在接收到Token后,需要将其保存在本地,以便后续的请求中携带Token。
  3. 携带Token:客户端在每次请求时,需要在请求头中携带Token,以便服务器进行验证。
  4. 验证Token:服务器在接收到请求时,需要从请求头中获取Token,并进行验证。如果Token验证通过,则处理请求,否则返回错误响应。
  5. 刷新Token:为了避免Token被恶意攻击或过期,客户端需要定期刷新Token,可以在Token即将过期时,向服务器发送刷新Token的请求,以获得新的Token。

项目上如何运用的token

列举的是目前公司使用token进行用户身份鉴权的大致流程:

在这里插入图片描述

token过期了什么办?

Token续活
目前项目中的Token续活方式,当前在redis设置token的过期时间为24分钟(根据项目业务的使用情况进行制定的),从前端来的每一次请求都在网关处对token进行续活,只要这个token还没有过期就会一直更新它的过期时间。如果某一次来的http请求间隔时间超过了24分钟,那么这个时候token已经过期了,无法进行续活。前端会重定向到登陆页面提示用户进行登陆。

总结

在使用Token进行身份验证和授权时,Token通常是存储在HTTP请求头中的,如果使用HTTP协议进行通信,那么Token就会被以明文的形式传输,容易被窃取或篡改,从而导致安全风险。而使用HTTPS协议,可以保证Token在传输过程中被加密,并且客户端和服务器的身份都经过了身份验证,从而有效地防止了中间人攻击和窃听等安全风险。

HTTPS协议可以通过使用SSL或TLS等安全协议,在客户端和服务器之间建立一条安全的加密通道,使得通信过程中的数据在传输过程中被加密,从而保证数据的机密性。同时,HTTPS协议还可以使用数字证书进行身份验证,确保客户端和服务器的身份都是可信的,从而保证身份的合法性和完整性。

升华

多角度看问题,多个维度看问题能够更加深入的理解和学习到该知识点。例如5w2h的方式。

也许您对下面的内容还感兴趣: