token 我们说的token,是指 访问资源的凭据 。使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。

大致流程:

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

1. 优势
那Token相对于Cookie/Session的好处:

支持跨域访问: Cookie是不允许垮域访问的,token支持
无状态: token无状态,session有状态的
去耦: 不需要绑定到一个特定的身份验证方案。Token可以在任何地方生成,只要在 你的API被调用的时候, 你可以进行Token生成调用即可.
更适用于移动应用: Cookie不支持手机端访问的
性能: 在网络传输的过程中,性能更好
基于标准化: 你的API可以采用标准化的 JSON Web Token (JWT). 这个标准已经存在 多个后端库(.NET, Ruby, Java,Python, PHP)和多家公司的支持(如: Firebase,Google, Microsoft)
2 缺陷

1. 占带宽
正常情况下要比 session_id 更大,需要消耗更多流量,挤占更多带宽,假如你的网站每月有 10 万次的浏览器,就意味着要多开销几十兆的流量。听起来并不多,但日积月累也是不小一笔开销。实际上,许多人会在 JWT 中存储的信息会更多。
2. 无法在服务端注销,那么久很难解决劫持问题
3. 性能问题
JWT 的卖点之一就是加密签名,由于这个特性,接收方得以验证 JWT 是否有效且被信任。但是大多数 Web 身份认证应用中,JWT 都会被存储到 Cookie 中,这就是说你有了两个层面的签名。听着似乎很牛逼,但是没有任何优势,为此,你需要花费两倍的 CPU 开销来验证签名。对于有着严格性能要求的 Web 应用,这并不理想,尤其对于单线程环境。

路漫漫其修远兮。

最新文章

  1. Java 动态代理机制详解
  2. PHP实现RESTful风格的API实例(三)
  3. 百度文库,linux下安装oracle客户端
  4. 用audacity制作循环背景音乐
  5. Java语法细节(2)
  6. ace-min.css
  7. How to solve the SVDI SN Number Display Problem
  8. C# get set方法
  9. 详解boost库中的Message Queue .
  10. HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)
  11. CSS——inline-block属性
  12. 44个JAVA代码质量管理工具(转)
  13. ubuntu下的ssh工具gstm
  14. 用Entity Framework往数据库插数据时,出现异常,怎么查看异常的详细信息呢?
  15. [COGS 1065] 绿豆蛙的归宿
  16. USACO Section 2.1 Healthy Holsteins
  17. js 使用Math函数取得数组最大最少值
  18. 题解-bzoj3901 棋盘游戏
  19. Java集群优化——使用Dubbo对单一应用服务化改造
  20. 《图解HTTP》读书笔记(转)

热门文章

  1. httpContext.User.Identity.IsAuthenticated 总是为fasle
  2. PAT B1041 考试座位号(15)
  3. P1417 烹调方案(思维+01背包)
  4. lnmp1.5部署laravel项目
  5. Mysql 三大特性详解
  6. Elastic Search的聚合搜索
  7. Java super与this
  8. Java lesson18homework
  9. 基于C#实现与JY61姿态角度传感器通信
  10. nodes.js详细安装