token的理解与使用

什么是token

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

token的用处

Token 完全由应用管理,所以它可以避开同源策略
Token 可以避免 CSRF 攻击
Token 可以是无状态的,可以在多个服务间共享

Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。如果这个 Token 在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。

基于Token的身份验证

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

token的优势

无状态、可扩展:在客户端存储的token是无状态的,并且能够被扩展。基于这种无状态和不存储session信息,负载均衡器能够将用户信息从一个服务传到其他服务器上。如果我们将已验证用户的信息保存在session中,则每次请求都需要用户想已验证服务器发送验证信息。用户量大时,可能会造成一些拥堵
安全性:请求中发送token而不再是发送cookie能够防止跨站请求伪造。
可扩展性
多平台跨域
基于标准

在使用无状态 Token 的时候,有两点需要注意:
Refresh Token 有效时间较长,所以它应该在服务器端有状态,以增强安全性,确保用户注销时可控
应该考虑使用二次认证来增强敏感操作的安全性

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值