快速理解Token机制

快速理解Token机制

什么是token

App在和后台进行通信服务的时候往往会借助于token,那么token的表示形式是什么,而token的作用又是什么呢?
简单来说,token就是一种连接身份证明,往往由一串字符串表示,是和服务器进行通信的令牌。如果你的token不通过,那么就无法访问到后台服务器,相当于服务器的一道安全防线。只要拥有该服务器身份证的才是公民,不然都是黑户,不允许交易的哦。而且有了token,除了第一次需要传入身份信息,后续仅传入token即可,因为身份信息已经根据保持在服务器了,也保证了传输过程中的安全性。

token的生成

作为一个token你需要证明你的身份,所以在生成token的时候需要考虑以下几点:
1、需要登录信息,这是证明你身份的最直接的内容,也是token不可或缺的原始素材之一,所以我们往往是通过登录接口来获取第一个token。
2、当前时间戳,因为你不可能一个token就能永久使用,这样token一旦丢失就大大降低了安全性,所以很多时候我们的token是有时限的,那么至于是当前时间还是访问时间就倒是无伤大雅了。所以很多时候我们还会有额外的方式进行刷新token,比如通过ctgt进行刷新,或者就简单点通过直接传入当前token来获取新的一个token内容,保证用户在当前使用中的token是有效的。
3、这时候可能还需要一些额外数据保证我们token的唯一性,比如手机IP,MAC地址,或者签名,然后根据加密算法,比如MD5,或者hash算法生成一个token字符串,同时服务器保存用户这些信息,并将token返回给客户端。
在这里插入图片描述

token的使用步骤

通过上面步骤快速的获取了token之后,我们就可以通过以下的方式来使用token了。
1、最开始当然是需要通过登录这些获取token字符串
2、然后在每次对后台请求的时候携带拿到的token,至于这里是放在header里还是字段里就看你的后台是怎么想的了。
3、为了避免token失效,一个额外进行刷新token的方式不能忘记,这时候可以开启一个保活服务进行不断刷新token,也可以开启监听等待后台推送最新的token给你,又或者简单的通过AlaramManage(Android的一个定时服务类)进行定时轮询索取的方式进行刷新,只要保证token的有效性就可以了。
在这里插入图片描述

简单总结

下面简单总结下token的特点:

  1. 无状态、可扩展
  2. 跨程序调用
  3. 支持平台较多浏览器,手机APP,电视机等
  4. 支持平台较多浏览器,手机APP,电视机等
  5. 存储在缓存服务器中比如redis
  6. 可以自定义过期时间,让缓存失效
  7. 在用户正在操作但是Token快过期时,自动重新生成一个新Token
  8. 相对来说比较安全,因为Token生成的值是由用户名+用户id+登录时间+随机数生成
    token常见的是比如基于Json的JWT,还有表单验证的csrf等等。

JWT:Json Web Token,是基于Json的一个公开规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息,他的两大使用场景是:认证和数据交换

CSRF:CSRF利用用户正常登录产生的cookie,利用钓鱼网站传给用户发送一张有内容的表单,并携带用户的正常cookies访问网站,达到将伪造的表单通过用户之手传到网站上的目的。为了避免用户提交其他网站生成的表单,网站在用户登录时签发给用户一个csrftoken,该token不存放在cookie中(存放在浏览器的local storage中),由网站前端js调用(识别{{form.field_name}} ),在提交表单时需要携带该token从而验证该表单来自于本网站(服务器端的token验证数据存放在session中)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值