什么是token?token是用来干嘛的?

news/2025/2/12 20:48:58/文章来源:https://www.cnblogs.com/roboat/p/18712121

从事计算机行业的朋友都听说过token这么个东西,尤其是deepseek爆火后api(大家都知道什么意思吧),但是其他行业的人就很少了解到token,下面就给大家来详细介绍一下token是什么意思?token是用来干嘛的这一块的内容,希望能帮助到大家。

 token是什么意思?

作为计算机术语时,是“令牌”的意思。Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。说白了token是一个身份卡,有权限的作用。例如在USB1.1协议中定义了4类数据包:token包、data包、handshake包和special包。主机和USB设备之间连续数据的交换可以分为三个阶段,第一个阶段由主机发送token包,不同的token包内容不一样(暗号不一样)可以告诉设备做不同的工作,第二个阶段发送data包,第三个阶段由设备返回一个handshake包。

token产生的背景

HTTP 是一种没有状态的协议,也就是它并不知道是谁是访问应用。这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下。

token是用来干嘛的

使用token机制的身份验证方法,在服务器端不需要存储用户的登录记录。

大概的流程:

1️⃣客户端使用用户名和密码请求登录。

2️⃣服务端收到请求,验证用户名和密码。

3️⃣验证成功后,服务端会生成一个token,然后把这个token发送给客户端。

4️⃣客户端收到token后把它存储起来,可以放在cookie或者Local Storage(本地存储)里。

5️⃣客户端每次向服务端发送请求的时候都需要带上服务端发给的token。

6️⃣服务端收到请求,然后去验证客户端请求里面带着token,如果验证成功,就向客户端返回请求的数据。

 token的使用小结:

◾ 前端登陆的时候向服务器发送请求,服务器验证成功,会生成一个token

◾ 前端会存储这个token,放在session或cookie中,用于之后的业务请求身份验证

◾ 拿着这个token,可以在当前登录的账号下进行请求业务,发送请求时,token会放在请求头里,服务器收到这个业务请求,验证token,成功就允许这个请求获取数据

◾ token可以设置失效期

利用token机制进行登录认证,可以有以下方式:

a. 用设备mac地址作为token

客户端:客户端在登录时获取设备的mac地址,将其作为参数传递到服务端

服务端:服务端接收到该参数后,便用一个变量来接收,同时将其作为token保存在数据库,并将该token设置到session中。客户端每次请求的时候都要统一拦截,将客户端传递的token和服务器端session中的token进行对比,相同则登录成功,不同则拒绝。

此方式客户端和服务端统一了唯一的标识,并且保证每一个设备拥有唯一的标识。缺点是服务器端需要保存mac地址;优点是客户端无需重新登录,只要登录一次以后一直可以使用,对于超时的问题由服务端进行处理。

b. 用sessionid作为token

客户端:客户端携带用户名和密码登录

服务端:接收到用户名和密码后进行校验,正确就将本地获取的sessionid作为token返回给客户端,客户端以后只需带上请求的数据即可。

此方式的优点是方便,不用存储数据,缺点就是当session过期时,客户端必须重新登录才能请求数据。

当然,对于一些保密性较高的应用,可以采取两种方式结合的方式,将设备mac地址与用户名密码同时作为token进行认证。
 

APP利用token机制进行身份认证

用户在登录APP时,APP端会发送加密的用户名和密码到服务器,服务器验证用户名和密码,如果验证成功,就会生成相应位数的字符产作为token存储到服务器中,并且将该token返回给APP端。

以后APP再次请求时,凡是需要验证的地方都要带上该token,然后服务器端验证token,成功返回所需要的结果,失败返回错误信息,让用户重新登录。其中,服务器上会给token设置一个有效期,每次APP请求的时候都验证token和有效期。

 token的存储

token可以存到数据库中,但是有可能查询token的时间会过长导致token丢失(其实token丢失了再重新认证一个就好,但是别丢太频繁,别让用户没事儿就去认证)。

为了避免查询时间过长,可以将token放到内存中。这样查询速度绝对就不是问题了,也不用太担心占据内存,就算token是一个32位的字符串,应用的用户量在百万级或者千万级,也是占不了多少内存的。
 

token的加密

token是很容易泄露的,如果不进行加密处理,很容易被恶意拷贝并用来登录。加密的方式一般有:

在存储的时候把token进行对称加密存储,用到的时候再解密。

文章最开始提到的签名sign:将请求URL、时间戳、token三者合并,通过算法进行加密处理。

最好是两种方式结合使用。

还有一点,在网络层面上token使用明文传输的话是非常危险的,所以一定要使用HTTPS协议。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 开发app流程

准备: DCLOUD开发者账号、IOS开发者账号、高德地图开发者账号 1、在DCLOUD平台创建【应用】在应用中设置【各平台信息】,安卓的包名自己写一个,ios BundleId在ios开发者账号中获取,本教程以安卓为主,ios方面的问题暂时忽略记住这个列表中的 安卓的包名 和 ISO的域名/Bundl…

智能驾驶中的 感知 模块介绍

在自动驾驶系统中,感知技术是核心基础之一。感知技术为车辆提供环境信息,使其能够实现对周围环境的理解、分析与决策,从而保证安全性和高效性。通常大家对感知的介绍停留在“眼睛”的作用,但这样的解释太宽泛了例如感知到底是什么?由哪些模块组成?输入输出有什么含义?数…

AI行为识别摄像机

AI行为识别摄像机具备24小时不间断的视频监控能力,可以随时捕捉现场动态,确保无死角覆盖。通过训练好的模型,该设备能够对不同的人类活动进行分类和判断,从而有效区分正常与异常行为。例如,在商场中,当检测到顾客有异常举动时,系统会立即发出警报。相比于传统监控设备,…

【笔记】多项式Ⅰ:

前言 这一节用于讲解拉格朗日插值法(Lagrange Polynomial)和快速傅里叶变换(Fast Fourier Transform),但是含有前置知识,因此有大量学过的知识可以直接跳过,存在大量证明会放出相应的链接。 多项式 基本概念 我们将形如 \(\textstyle{\sum a_nx^n}\) 的有限项相加式子成…

睡岗智能识别摄像机

睡岗智能识别摄像机具备24小时不间断的视频监控能力,可以随时查看现场情况,并记录所有视频数据。通过深度学习算法,该设备能够分析视频流中的人物行为,准确判断是否存在“睡岗”现象。一旦检测到异常情况,系统会自动向管理人员发送警报信息,以便迅速处理。所有录像资料都…

微分信号作用量

微分信号传递函数 \[G(s) = \frac{Ts}{Ts+1} \]阶跃响应 单位阶跃函数\(u(t)\) 的拉普拉斯变化为 \(U(s)=\frac{1}{s}\) \[Y(s)=G(s)U(s)=\frac{T}{Ts+1} \]对\(Y(s)\) 进行拉普拉斯反变换,得到微信信号的阶跃响应曲线 \[y(t) = e^{-\frac{t}{T}}u(t) \]对\(y(t)\) 进行积分,可…

非车间人员进入识别监控系统

非车间人员进入识别监控系统的核心是 YOLOX 深度学习算法,非车间人员进入识别监控系统通过现场监控摄像机覆盖了车间及周边的各个关键区域,当系统检测到非车间人员进入时,会迅速触发告警流程。首先,系统会在现场通过语音提醒装置发出语音警告,要求其立即离开。同时,系统会…

用AI绘制CAD气温曲线图

此文章视频讲解地址 https://www.bilibili.com/video/BV1JtKjenEhF 需求 根据气温的JSON数据,用AI自动生成CAD格式的气温曲线DWG图 数据准备 用deepseek获取了北京市最近一个月的气温json数据AI对话 首先进入唯杰地图云端管理平台 选择与唯杰地图AI对话需求描述 1、要弹出一个…

攻防世界-RE-BABYRE

这道题目比较有趣,首先我们分析它是一个不套壳的程序,然后直接用IDA打开他的加密逻辑也很直观:flag一定十个长度为14的字符串 judge在这里是一个函数指针,指向judge数组的第一位可是当我们点击judge却无法查看它的程序逻辑。 我们注意到在上面有这样一段程序for ( i = 0; i…

相机模型(Camera Models)总结

针孔相机(Pinhole camera)如图所示,这是一个比较简单的针孔相机模型,这里的树是我们需要拍摄的物体,记作object,从物体身上不同点发出不同颜色的光线。 barrier表示的是障碍,它位于物体和胶片之间,具有阻挡光线的作用。 Aperture 表示针孔,即障碍物上的一个小孔。光线…

C++代码改造为UTF-8编码问题的总结

详细介绍将C++程序代码改造为UTF-8编码时可能遇到的问题,以及具体的解决方案;同时介绍了字符编码的相关知识。1. 引言 无论是哪个平台哪种编程语言,字符串乱码真是一个让人无语的问题:你说这个问题比较小吧,但是关键时刻来一下真是受不了。解决方式也有很多种,但是与其将…

告别卡顿!Cloud Ace 满血 DeepSeek-R1/V3 API 重磅上线!企业级 AI 触手可及

告别卡顿!Cloud Ace 重磅推出企业级 DeepSeek-R1/V3 API 服务,直连模型核心,秒级响应无延迟,彻底解决访问拥堵、体验卡顿难题!集成智能联网搜索,实时抓取全网资讯,答案准确率与时效性双重升级。即开即用,灵活按需计费,无缝嵌入企业系统,支持高并发全球访问。基于 Goo…