cookies
cookies,比如我是个用户,我们去淘宝购买的时候,我要先向淘宝服务器发起一个登录请求,去登录我们的淘宝,但是我们使用的是http协议,它是没有记忆的一个协议,我们登录完,去购买商品或付款,它忘记我们是谁了,所以当我们做后续的操作,就让我们重新登录一次,就会很麻烦。所以人们就发明了cookie这个机制。每次登录,服务器就会给我们返回一段cookie字符串,然后把cookie保存到我们本地,下次我再去请求登陆的时候。我会带着cookie过去。服务器一看到是我这个cookie。哦,原来是你哦,已经登录过了,是老朋友了。那就会给我放行。我就可以继续过去的操作。
session
cookie 和 sesison 是配合着一起使用的 , 比如说我要去登录淘宝购物,然后我登录之后 , 淘宝服务器会给我返回一串cookies,下次我再去淘宝服务器发起请求的时候吧这个cookies 带过去,那么你想想服务器,是怎么来验证这个cookies 是合法的呢? 然后其实服务器在我登录之后 他自己本地会生成一串sessionid,并且保存在服务器上面,那么他给我的那串cookies 里面呢 , 就包含这个sessionid的信息 , 那我下次请求把这个cookies 带过去的时候,服务器会验证一下我cookies信息里面这个sessionid跟他本地保存的这个sessionid 是不是一样的,如果是一样的,就说明你已经是认证过的用户了,就可以继续访问了.
token
其实 session 和 cookies 是可以解决用户健全的这个问题的 , 但是你想想 你是服务器的话 , 你会开心吗?因为有那么多人 逛淘宝 , 然后 所有人一个sessionid, 你都需要保存起来 , 那么你得有多大压力呀.
所以 , 为了减轻咱们服务器的一个压力 , 人们就发明出来一个token 的机制, 只要我登录淘宝 , 那么 淘宝服务器呢 , 就会给我发一个token,我并不把这个token 保存到我的本地 , 但是你想想 , 我怎么来验证你的token 是合法的呢 , 那我服务器给你token的时候,我会给你签一个名,用的是只有我知道的一个加密方法以及密钥 , 那么下次你带这个token过来的时候,我会用同样的方法和密钥对你的这个消息再次进行一个签名,然后我对比一下这两个签名,如果是一样的 , 那我就知道 你是我已经认证过的用户了 , 然后 如果不一样 , 不好意思你没有权限登录.