前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于token

关于token

作者头像
宇宙无敌暴龙战士之心悦大王
发布2022-02-24 08:30:26
9680
发布2022-02-24 08:30:26
举报
文章被收录于专栏:kwaikwai

讲token需要先复习一下cookie和session。

cookie

客户端保存用户信息的方式,也是session实现机制之一。

我们每次打开一个以前打开过的编辑栏,他可能会自动填写我们以前填的内容,这就是cookie机制啦。

但是cookie特别小,一般不超过4kb,所以只存一些用户信息。

session

存在服务端里用于验证客户端身份的,同时也带有一大堆自定义信息,这里就有很多操作了。

客户端访问服务端的时候,就会把这玩意留在服务器上。

不止是账号密码,比如客户端想知道你买了啥,就需要用到session啦。

但是session需要存在服务端上,很费服务端空气。

token

token相当于是进步的session,它不再需要存在服务器上了,只需要双方用算法验证即可。

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌。当客户端第一次访问服务端,服务端会根据传过来的唯一标识userId,运用一些算法,并加上密钥,生成一个Token,然后通过BASE64编码一下之后将这个Token返回给客户端,客户端将Token保存起来(可以通过数据库或文件形式保存本地)。下次请求时,客户端只需要带上Token,服务器收到请求后,会用相同的算法和密钥去验证Token。

最简单的Token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由Token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接Token请求服务器)。

盐:就是我们常见的md5算法啦。

使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

  • 客户端使用用户名跟密码请求登录
  • 服务端收到请求,去验证用户名与密码
  • 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
  • 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者数据库里
  • 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
  • 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

增加性能

同样,如果频繁获取该token,服务端就要多次进行计算,也非常浪费资源。

这时候我们就可以引入redis,用于保存token,把重复的token都拦下来!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • cookie
  • session
  • token
  • 增加性能
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档