究竟什么是token??
基于服务器验证方式的验证流程:
我们都是知道HTTP协议是无状态的,这种无状态意味着程序需要验证每一次请求,从而辨别客户端的身份。在这之前,程序都是通过在服务端存储的登录信息来辨别请求的。这种方式一般都是通过存储Session来完成。随着Web,应用程序,以及移动端的兴起,这种验证的方式逐渐暴露出了问题。尤其是在可扩展性方面。
基于服务器验证方式暴露的一些问题
- Seesion:每次认证用户发起请求时,服务器需要去创建一个记录来存储信息。当越来越多的用户发请求时,内存的开销也会不断增加。
- 可扩展性:在服务端的内存中使用Seesion存储登录信息,伴随而来的是可扩展性问题。
- CORS(跨域资源共享):当我们需要让数据跨多台移动设备上使用时,跨域资源的共享会是一个让人头疼的问题。在使用Ajax抓取另一个域的资源,就可以会出现禁止请求的情况。
- CSRF(跨站请求伪造):用户在访问银行网站时,他们很容易受到跨站请求伪造的攻击,并且能够被利用其访问其他的网站。
在这些问题中,可扩展行是最突出的。因此我们有必要去寻求一种更有行之有效的方法。
Token的引入:
在Web领域基于Token的身份验证随处可见。在大多数使用Web API的互联网公司中,tokens 是多用户下处理认证的最佳方式。客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。
Token的定义:
Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。
使用Token的目的:
Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
了解了Token的意义后,我们就更明确的知道为什么要用他了。
基于Token的验证原理
基于Token的身份验证是无状态的,我们不将用户信息存在服务器或Session中。
这种概念解决了在服务端存储信息时的许多问题,NoSession意味着你的程序可以根据需要去增减机器,而不用去担心用户是否登录。
基于Token的身份验证的过程如下:
- 用户通过用户名和密码发送请求。
- 程序验证。
- 程序返回一个签名的token 给客户端。
- 客户端储存token,并且每次用于每次发送请求。
- 服务端验证token并返回数据。
每一次请求都需要token。token应该在HTTP的头部发送从而保证了Http请求无状态。我们同样通过设置服务器属性Access-Control-Allow-Origin:* ,让服务器能接受到来自所有域的请求。需要主要的是,在ACAO头部标明(designating)*时,不得带有像HTTP认证,客户端SSL证书和cookies的证书。
究竟什么是token??相关推荐
- 360oauth token是什么意思_Coin还是Token?背后的逻辑是什么?
下文内容同视频~https://www.zhihu.com/video/1167101256702353408 我们上次的节目说过比特币其实并不是货币,而是资产,虽然广义上依然是"钱&quo ...
- bitoken是什么币_区块链入门 | Coin还是Token?背后的逻辑是什么?
邀请你看<「CoinBI Talk」第四期-Coin和Token,读懂币背后的逻辑>,点击链接观看. 我们上次的节目说过比特币其实并不是货币,而是资产,虽然广义上依然是"钱&qu ...
- cookie、session、Token究竟区别在哪?如何进行身份认证,保持用户登录状态?
HTTP是无状态的,也就是说你这次访问了服务器,关闭网页,再次访问服务器,服务器是没有意识到又是你来访问,那怎么保持登录状态呢? 设置让用户可以选择记住用户名和密码,但是把密码交给浏览器,如果电脑被黑 ...
- 不要用JWT替代session管理(上):全面了解Token,JWT,OAuth,SAML,SSO
通常为了弄清楚一个概念,我们需要掌握十个概念.在判断 JWT (Json Web Token) 是否能代替 session 管理之前,我们要了解什么是 token,以及 access token 和 ...
- GitHub防黑客新措施:弃用账密验证Git操作,改用token或SSH密钥,今晚0点执行
萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 还在用账户+密码对GitHub上的Git操作进行身份验证? 赶紧整个token(令牌)或SSH密钥吧! 8月14号0点(8月13日9:00 ...
- BCH虫洞项目有多安全以及WHC究竟能干什么?
虫洞项目是BCH的明星项目之一,自从概念被提出后就受到了BCH社区和币圈的关注,因为是基于BCH的智能合约方案,再加上以太坊在过去的火爆,所以社区对于这个项目是充满期待的.而虫洞项目也没有人让人失望, ...
- Cookie、Session、Token那点事儿
前言:新公司项目中使用到了Cookie,在各大Android技术讨论群向前辈们取经讨论这cookie.session.token这仨哥们的时候,很多开发者说法不一各抒已见,所以是时候回顾下http基础 ...
- Fcoin Token ( FT )——数字货币交易所的颠覆者,还是无情镰刀的收割者
一.Fcoin简介 最近一家叫Fcoin的数字货币交易所引起了大量关注,在其上线的短短两星期内,其上的平台币FT在短短两个星期之内上涨了100倍,并且根据其官方公布的交易量,Fcoin也同时成为了全球 ...
- 训练1000层的Transformer究竟有什么困难?
©PaperWeekly 原创 · 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP.神经网络 众所周知,现在的 Transformer 越做越大,但这个"大"通常是&q ...
- Secondary NameNode:它究竟有什么作用?(转自:http://blog.csdn.net/xh16319/article/details/31375197)
前言 最近刚接触Hadoop, 一直没有弄明白NameNode和Secondary NameNode的区别和关系.很多人都认为,Secondary NameNode是NameNode的备份,是为了防止 ...
最新文章
- java servlet 输出_JavaWeb中servlet读取配置文件的方式
- 再次携号转网_潍坊一小伙欲携号转网屡被拒 联通客服:试运营状态不支持携转...
- 咦,拆分个字符串都这么讲究?
- 中国双焊接钢塑土工格栅市场趋势报告、技术动态创新及市场预测
- DHTMLX入门教程
- 怎么快速查找重复文件以及删除重复文件
- 给机器人罗宾写一封英语回信_人教版5年级英语unit1知识
- c语言输出最大的数ns流程图_图8循环结构的NS流程图.ppt
- VOC数据集介绍及构建自己的VOC格式目标检测数据集
- 0基础转行3D建模,从月薪3000到15k,我整理的超全学习指南
- python安装pywifi
- stm32——端口重映射
- 记一次feign调用报错:feign.codec.DecodeException: Error while extracting response for type [java...
- 未来5年到底是做什么生意最好?
- 西交《物理化学》在线作业
- 2. UFS2.1 —— Descriptor描述符
- 什么是内部类?有什么作用?静态内部类和非静态内部类的区别?
- 软件架构师的培养与认证
- nginx配置静态资源为https
- stagefright 架构分析(六) 创建一个 Soft Decoder