对于初学者来说,可能很难会理解
Token
,经常会在互联网上看到出售各种渠道的token,
那么token到底是什么?其原理又是什么?
首先和Token相对应的有一个Session, what?怎么又懵逼了?
Session又是什么?当我们理解完Session的原理后就能很快的理解Token了
传统的Seeion验证
一般,当我们登陆账号后,Http协议进行数据的提交,服务器接收到用户帐号和密码进行验证,在之后的一系列操作,因为http协议本身是一种无状态的协议,再下一次请求必须重新发送一次帐号和密码来进行认证。
根据http协议我们没办法做一个长期的验证,为了让应用能够识别身份,我们需要在服务端进行身份的保存,我们用Session进行保存,这就是传统的session认证。
但是他有致命的缺点:
Session保存是使用的内存
,当用户量大的时候会对服务器增加很大的压力。
我们再来看看
Token
Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。
都是客户端和服务器通讯用的那么Token和Seeion它们的区别是什么?
Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,
服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可
,无需再次带上用户名和密码。
豁然开朗吧?
虽然作用一样,但是最大的区别在于
Seeion的令牌保存在服务器,而Token的令牌保存在自己本地的客户端
我好像明白了,但是我记得有个东西叫
cookie
是保存在本地的,cookie和Token一样吗?
它们其实还有有区别的
token和cookie的五点异同:
①:token和cookie一样都是首次登陆时,由服务器下发,都是当交互时进行验证的功能,作用都是为无状态的HTTP提供的持久机制。
②:token存在哪儿都行,localstorage或者cookie。
③:token和cookie举例,token就是说你告诉我你是谁就可以。
cookie 举例:服务员看你的身份证,然后给你一个编号,以后,进行任何操作,都出示编号后服务员去看服务器上的身份证库查你是谁。
token 举例:直接给服务员看自己身份证
④:对于token而言,服务器不需要去查看你是谁,不需要保存你的会话。当用户logout退出的时候cookie和服务器的session都会注销;但是token只是注销浏览器信息,不查库。