美文网首页
浅谈Cookie、Session和Token(Seesion篇)

浅谈Cookie、Session和Token(Seesion篇)

作者: 抠脚焦太郎 | 来源:发表于2019-11-20 20:04 被阅读0次

二、Session

一句话描述Session,相较于Cookie将数据缓存在浏览器中,Session机制选择将数据保存在服务端。但Session也离不开Cookie机制,两者相辅相成

  • 常见的cookie见下面格式,我们看到cookie里面也包含了一个sessionid,它和保存在服务端的session表格相对应。


    cookie格式
  • 服务端的session表格格式假设如下。


    session表格

现在假设李四这个普通用户想要删除一条数据,但是删除用户是管理员的权限。那么整个流程如下:

删除请求
首先浏览器在发送请求的时候会自动带上cookie,里面包含sessionid放到请求(request)头里面。和删除请求一起发送给服务端,服务端根据发过来的sessionid从自己的内存表里面找到用户的权限,发现他只是一个broswer权限,于是拒绝的他删除的请求。
session放到requst头里面

我们发现从始至终客户端都没有告诉客户端自己是谁,它只是有一个经过特定规则哈希之后的sessionid。所以我就算知道Jack马的userid也猜不到他的sessionid,也就无从仿造了。当然如果sessionid被偷掉了也会被人利用假身份登录。
这样做的好处是减少了客户端保存的数据,增加了安全性。坏处就是增加了服务器的内存负载,当用户数量比较多的时候session表就会占用大量的内存空间。

因为session使用了内存,而内存就会让我们的机器变得有状态,我们就不方便创建集群了。比如说用户的Session信息存放在服务器A中,而这时候服务器A由于访问量比较大,集群自动创建了服务器B来分担负载,可是服务器B里面没有用户的Session信息,怎么办?从服务器A中复制过来吗?如果这时候服务器B的负载也超了又创建了服务器C呢?这种方案会变得缓慢且复杂。当然我们也可以创建一个缓存集群专门存放session,使缓存与服务器解耦。有没有其他更简单灵活的方案呢?Token该出场了。


相关文章

网友评论

      本文标题:浅谈Cookie、Session和Token(Seesion篇)

      本文链接:https://www.haomeiwen.com/subject/aykaictx.html