token详解

news2024/11/25 14:31:25

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的方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/429557.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 图系列之基于有向无环图的拓扑排序算法

1. 前言 有向无环图,字面而言,指图中不存在环(回路),意味着从任一顶点出发都不可能回到顶点本身。有向无环图也称为 DAG(Directed Acycline Graph)。 有向无环图可用来描述顶点之间的依赖关系,依赖这个概…

MLX90640 热成像 STM32

点击此处了解详情点击此处了解详情点击此处了解详情点击此处了解详情点击此处了解详情 1、描述 这是一款手持式多功能热像仪,小巧轻便,搭载3.2英寸TFT显示屏、MLX90640热红外探头,锂电池供电,可以在各种场合使用,温度…

( “树” 之 DFS) 572. 另一棵树的子树 ——【Leetcode每日一题】

572. 另一棵树的子树 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。 二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tr…

Densely Connected Convolutional Networks(引言翻译(有选择性))

翻译得有可能会不太专业,望见谅的同时,如果有些地方翻译错了,欢迎批评指正! as information about the input or gradient passes through many layers, it can vanish and "wash out" by the time it reaches the end …

淄博烧烤、洛阳汉服......爆火,揭秘实体店客流爆满的秘诀!

淄博烧烤、云南泼水、洛阳穿越...... 沉寂了3年后,线下实体消费终于又开始火热起来,临近五一小长假,国内外旅游订单出现井喷式增长,线下消费持续迎来新一轮的高峰。 而这些热点,也带动了周边很多相关的实体店&#xff…

美团外卖平台的部分外卖 SPU数据实操练习

一、环境要求 Hadoop hive spark hbase开发环境 开启hadoop:start-all.sh开启zookeeper:zkServer.sh start开启hive:nohup hive --service metastore &nohup hive --service hiveserver2 & 打开hive界面:beeline -u j…

Ubuntu16.04安装NCNN和Opencv

一、安装NCNN 官网:NCNN官方文档 On Debian, Ubuntu or Raspberry Pi OS, you can install all required dependencies using: 首先安装NCNN的依赖项,根据官网安装以下依赖项。 sudo apt install build-essential git cmake libprotobuf-dev protobuf-…

dc-4靶机渗透

1.信息搜集,扫描存活主机,扫描端口,服务,发现开放80,22端口,cms没有看到 nmap 192.168.85.0/24 nmap -p1-66535 192.168.85.175 nmap -sv 192.168.85.1752.访问网站,发现登录框,根据提示&#…

360安全卫士 - 设置技巧 / 关闭广告

360安全卫士 - 设置技巧 / 关闭广告前言同步设置基本设置弹窗设置开机小助手安全防护中心漏洞修复木马查杀功能大全管理360文件夹游戏管家健康助手前言 360安全卫士是一款免费的PC安全软件,拥有垃圾清理、病毒查杀、启动项管理等功能。虽然有一些广告,但…

【Python】python技能树之包含元祖的列表升降序

文章目录前言一、实际操作二、使用步骤总结前言 大家都知道,在Python里面可以使用.sort方法或者sorted函数对各种数据进行排序,例如: 一、实际操作 a [2, 3, 1, 9, 3, 7, 4] a.sort() b [2, 3, 1, 9, 3, 7, 4] c sorted(b, reverseTrue…

Linux中的网络

文章目录一 、查看网络配置1.2 route命令—查看路由条目1.3 1.3hostname命令—查看主机名称1.4netstat命令—查看网络连接情况二 、测试网络连接2.1 ping 命令2.2 traceroute命令—跟踪数据包的路由途径2.3 mtr—动态跟踪网络2.4 nslookup命令—测试域名解析三 、使用网络配置命…

迎难而上,阿里高频考点2023Java岗面试突击手册

上周我接到一位粉丝的私信说目前互联网形势实在对他太不友好,感觉自己每个技术栈都会一点,但不是完全精通。基本二面三面的时候就挂了,已经完全不知道该朝哪个方向努力了,希望可以给他一些建议和方法指导。那么,本次就…

[golang gin框架] 20.Gin 商城项目-商品模块功能

一.商品模块数据表ER图关系分析商品模块数据表相关功能关系见:[golang gin框架] 16.Gin 商城项目-商品模块数据表ER图关系分析二.商品相关界面展示商品列表该商品列表有如下功能1.增加商品按钮:跳转到增加商品页面2.搜索功能:输入商品名称,点击搜索3.修改商品字段(上架,精品,新…

软件测试入门第一步:编写测试报告

什么是测试报告? 1、说明:是指把测试的过程和结果写成文档,对发现的问题和缺陷进行分析,为纠正软件的存在的质量问题提供依据,同时为软件验收和交付打下基础。 ps. 【测试过程和测试结果的分析报告,以及上线…

大爽pygame入门教程 第一节 基础知识 练习提示与答案

作者自我介绍:大爽歌, b站小UP主 ,编程1对1辅导老师 1 逐行展示 思路提示 点击触发 之前的多行展示,是通过循环实现的。 这一回要点击触发一行的展示,不能直接使用循环了。 这里我们往更深层次去思考一下: 之前循环…

【CSS】margin 外边距负值使用案例 ( 正常外边距 | 使用外边距负值实现边框重叠 | 重叠边框突出显示 )

文章目录一、正常外边距案例二、使用外边距负值实现边框重叠三、重叠边框突出显示案例1、使用相对定位2、使用 z-index 设置定位盒子层级一、正常外边距案例 margine 正常情况下使用 , 设置 float 浮动 , 使得相邻的盒子模型紧贴在一起 ; 如果设置边框 , 则相邻的边框会重叠在…

A Comprehensive Capability Analysis of GPT-3 and GPT-3.5 Series Models论文学习

一、概述 Motivation:GPT系列的模型,像GPT-3,CodeX,InstructGPT,ChatGPT,尽管很多人关注他们能力的不同,但是很少关注GPT系列模型随着时间变化其能力的变化情况。 Methods: 在9个NL…

【LeetCode】轮转数组

👻内容专栏:《LeetCode刷题专栏》 🐨本文概括:189.轮转数组 🐼本文作者:花 碟 🐸发布时间:2023.4.12 目录 思想1 暴力求解 代码实现: 思想2 三次倒置 代码实现&#…

Linux使用宝塔面板搭建网站,并内网穿透实现公网访问

文章目录前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4.固定http地址5. 配置二级子域名6.创建一个测试页面前言 宝塔面板作为简单好用的服务器运维管理面板,它支持Linux/Windows系统,我们可用它来一键配置LAMP/LNMP环境、网站、数据库、FTP等&…

Java阶段二Day02

Java阶段二Day02 文章目录Java阶段二Day02SpringMVC的部分主流程HTTP请求Request1:请求行2:消息头3:消息正文HTTP响应Response1:状态行2:响应头3:响应正文通过版本迭代仿写SpringBootV1BirdBootApplication…