浅谈token是什么?


一、token是什么?

经过了小半年的开发工作,接触到的项目,只要不是无需登录的接口就需要携带token,可见token的重要性。

文章知识来源:
token是服务端生成的一串字符串,以作客户端进行请求的令牌,当第一次登陆后,服务器生成一个token便将此token返回给客户端,以后客户端只要带上这个token前来请求数据即可,无需再次带上用户名和密码

基于token的身份验证

使用基于token的身份验证方法,在服务端不需要存储用户的登录记录.流程是这样的: 客户端使用用户名跟密码去请求登录,服务度段收到请求,去验证用户名和密码,验证成功后,服务端会签发一个token,再把这个token发送给客户端,客户顿收到token以后可以把它存储起来,比如放在cookie里面或者local storage里面,客户端每次向服务端请求资源的时候需要带上服务端签发的token,服务端收到请求,然后去验证客户端请求里面带着的token,如果验证成功,以某种方式比如随机生成32位的字符串作为token,存储在服务器中,并返回token到APP,以后APP请求时,凡是需要验证的地方都要带上该token,然后服务端验证token,成功返回所需要的结果,失败返回错误信息, 重新登录,服务器上的token设置一个有效期,每次APP请求时都要验证token和有效期.

token的优势:

1.无状态.可扩展

在客户端存储的token是无状态的,并且能被扩展的.基于这种无状态和不存储session信息,负载均衡器能够将用户的信息从一个服务器传到另一个服务器上.如果将已经验证的信息保存在session中,则每次请求都需要用户向已验证的服务器发送验证信息(称为session亲和性).用户量大时,可会造成一些拥堵.但是不要着急,使用token之后问题就会解决,因为token自己hold住了用户的验证信息.

2. 安全性

请求过程中发送token而不再发送cookie能够防止csrf(跨站请求伪造).即使在客户端使用了cookie存储token,cookie也仅仅是一个存储机制而不是用于认证,不将信息存储在session中,让我们少了对session操作,token是有实效的,一段时间之后需要重新验证,我们也不一定需要等到token自动实效,token有撤回的操作,通过token revocation可以使一个特定的token或是一组相同认证的token无效.

3. 可扩展性

token能够将创建与其他程序共享权限的程序.例如,能将一个随便的社交账号和自己的大号联系起来.当通过服务登录(我们将这个过程Buffer)时,我们可以将这些buffer附到登录的数据流上.使用token时, 可以提供可选的权限给第三方应用程序,当用户想让另一个应用程序访问他们的数据,我们可以通过建立api,得出特殊权限的tokens

4. 多平台跨域

提前先谈论下CORS(跨域资源共享), 对应用程序和服务进行扩展的时候,需要介入各种的设备和应用程序,让我们的api只提供数据服务,我们还可以做出设计选择来提供cdn中的资产.这消除了在为应用程序设置快速标头配置后CORS出现的问题,只要用户有一个通过了验证的token,数据和资源就能够在任何域上被请求到.

总的来说:
token的优点就是,轻便,在跨域资源共享时非常方便。例如在第三方授权时,只需要将token给对方,可以对用户的信息进行保密。在用户非常多时,也非常地快捷,解密后对比token而不是在session中获取用户信息来对比。由于token具有时效性,后端也可以进行取消,所有也非常安全。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值