首页 > 其他分享 >什么是token,为什么需要token

什么是token,为什么需要token

时间:2024-04-15 10:47:06浏览次数:34  
标签:02 为什么 需要 refreshtoken 过期 用户 信息 token

1.为什么需要token

  • 随着互联网的发展,为了更安全,以及更好的用户体验,逐渐产生了token这个技术方案
  • 之所以使用token是因为http/https协议本身是无状态的,不能进行信息的存储 (cookie可以进行信息存储,但存在一些限制)
  • token的作用是为了加强用户信息安全性,而添加的一层验证,去验证用户是否已经登陆,以及是否是用户本身在登陆,进行操作

2.token原理

  • token的本质就是一段加密的字符串
  • 通过服务器将加密的信息颁发给前端,前端每次请求携带该认证信息,来确保当前的用户是用户本身,防止有人冒充该用户
  • token就像一把钥匙,由服务器进行颁发给用户,持有正确的钥匙就能开正确的锁,持有的钥匙不正确,就无法打开对应的锁
  • 不需要进行存储,只需要每次服务器根据token进行解密,并验证信息是否正确以及是否过期即可
// 原始信息 每个用户的用户信息都不同,过期时间根据设置时间与当前时间对比决定是否让用户重新登录
const token = {
  过期时间:'2022-02-02 02:02:02',
  当前用户:'Tom',
}
//  加密后 一段无规律的字符串 可以通过特定的运算重新恢复成为 token
const tokenSecret = 'ASD324235SFETWE' 

3.无感刷新流程 refreshtoken

3.1 refreshtoken 的意义

  • refreshtoken 的存在是为了让用户信息更加安全,并且让用户体验更加而采取的
  • 试想,如果为了安全设置token每30s刷新一次,那么也就意味着用户每30s就需要登录一次,体验感很差
  • 但是如果将token过期时间设置为2小时,则安全性将大大降低(即可能存在token被人获取,如果刷新时间间隔短,意味着被利用的几率就会降低)
  • 如果方案更改为用户首次登录,发放给用户token与refreshToken,token真正过期时间为2小时,每30分钟需要通resfreshtoken去获取最新的token重新设置,并且要refreshtoken也会改变
  • 这样做就能即提高安全性,也能保证用户体验感
  • 图片说明
    token.原理png.png

标签:02,为什么,需要,refreshtoken,过期,用户,信息,token
From: https://www.cnblogs.com/coderzdz/p/18135389

相关文章

  • 为什么注册steam首选域名邮箱
    本篇文章仅代表个人看法,如有不同意见欢迎交流。目前批量注册steam多选用自定义域名邮箱,下面说几种域名邮箱的搭建和操作方法。第一种,使用第三方免费的域名邮箱服务。早期网易、腾讯、阿里都有提供免费的域名邮箱服务。但是多半是因为创建邮箱数有限制,所以并不推荐。我这里推荐......
  • Mybatis.xml中何时需要写ResultMap映射,什么时候需要给字段设置别名呢
    日常开发中,我们需要在mybatis.xml文件中,将数据库的查询结果映射到实体类中,那何时需要给字段起别名,何时不需要呢?总是不太清晰,接下来梳理记录一下。 至于一般什么时候,使用resultMap,一版什么时候使用别名呢,如果实体的每个字段都和数据库中的字段名称是不一样的,那一般就采用的是R......
  • 为什么我这么推崇体验式学习?
    有很多人问我怎么才能学会编程,需要报班吗?如何自学?为什么我看书看完就忘了?甚至开始怀疑自己,我是不是不适合学编程,女生适合当程序员吗?说实话,看到这么多不得其道的同学,我也很犯难,我不是搞教育的,但我深知外面的培训班也没有谈论教育的资格,我只能从我自身学会编程的经验出发,论证我接下......
  • redis为什么一定要用跳表实现有序集合,却不用平衡树,红黑树或者B+树呢?
    平衡树vs跳表平衡树必须满足所有节点的左右子树高度差不超过1,也就是平衡因子范围为[-1,1]。但是对于范围查询来说,利用平衡树通过中序遍历达到和跳表一样的效果,但是平衡树的每一次插入或者删除操作都需要保证整棵树的绝对平衡,只要不平衡就会通过旋转的方式来重新保持平衡,这个过......
  • 软件开发前期需求调研需要注意什么?
    需求调研明确身份首先需要明确你是乙方,不仅要注意言辞,还要注意你的行为。明确客户现场的需求调研对接负责人。明确调研目标及负责模块在调研开始前,你需要明确的知道调研目标,例如你调研的这个模块需要在什么时间段内完成,这样有利于你有个全局的时间观,有利于准时输出产物......
  • ssh免密码登陆避免首次需要输入yes
    看下面,默认连接需要输入yes服务器多了之后一台一台去输入yes肯定也不现实。太麻烦了[root@ansible~]#ssh-keygen[root@ansible~]#ssh10.0.0.31[root@ansible~]#ssh-copy-id10.0.0.31/usr/bin/ssh-copy-id:INFO:Sourceofkey(s)tobeinstalled:"/root/.ssh/id_......
  • 代码写完,开发完成一个功能之后,需要将代码提交上去提交到哪里?
    代码写完开发完成一个功能之后,需要将代码提交上去。提交到哪里?github、gitlab、gitee本地仓库每一个项目都有一个本地仓库远程仓库gitee202308-class提交代码:提交到本地仓库-->由本地仓库再提交到远程仓库 1、拉取远程仓库的项目gitcloneurl如果报错:Permissi......
  • 为什么传统行业几乎都用Oracle,而互联网行业几乎都不用Oracle呢?
    为什么传统行业几乎都用Oracle,而互联网行业几乎都不用Oracle呢?17 赞同7 评论10 收藏先抛结论:对互联网企业来说可以用,但是没有必要。理由如下:1、oracle目前来说还是占据着主流。除了互联网之外的传统行业基本上还是用的oracle,无论从规模还是数量上,比sql有......
  • count(?)为什么越来越慢?
    在日常的业务开发中,汇总记录使用selectcount(*)fromt是常见用法,分页查询的时候都会用到,那么随着系统记录的数量越来越多,你有没有发现这条语句执行的也越来越慢了呢?一、count(*)原理在不同的存储引擎中,count(*)有不同的实现方式MyISAM存储引擎中,把一个表的总行数存在了磁盘......
  • 美团二面:为什么不推荐使用 MyBatis 二级缓存?大部分人都答不上来!
    为了增加查询的性能,MyBatis提供了二级缓存架构,分为一级缓存和二级缓存。这两级缓存最大的区别就是:一级缓存是会话级别的,只要出了这个SqlSession,缓存就没用了。而二级缓存可以跨会话,多个会话可以使用相同的缓存!一级缓存使用简单,默认就开启。二级缓存需要手动开启,相对复杂,而且要......