会话保持 Session和cookie

   Session是什么?

            Session在网络中称为会话控制,是服务器为了保护用户状态而创建的一个特殊的对象,简而言之,session就是一个对象,用于存储信息。

 

Session有什么用?

            session是存储于服务端的特殊对象,服务端会为每一个浏览器(客户端)创建一个唯一的Session。这个session是服务器端共享,每个浏览器(客户端)独享的。我们可以在session存储数据,实现数据共享。

 

session的存储形式

          session类似于一个Map,里面可以存放多个键值对,是以key-value进行存放的。key必须是一个字符串,value是一个对象。

 

session的底层机制

         session是每一个浏览器所唯一的,是怎么实现的呢?其实,在访问一个网站时,在http请求时往往会带一个cookie,这个名字是jsessionnid,这个jessionnid表示的就是jession的id,这个由服务器创建的,并且唯一。服务器在使用时,会根据jessionnid来进行不同的操作。

          

当服务端使用session时,首先获取session,这个session通过jsessionid进行获取。

 

 session常用的方法

session和cookie的比较

      cookie存储在客户端 ,session存储在服务端

      cookie作用于他所表示的path中范围较小。session代表客户端和服务器的一次会话过程,web页面跳转时也可以共享数据,范围是本次会话,客户端关闭也不会消失。会持续到我们设置的session生命周期结束(默认30min)

      我们使用session需要cookie的配合。cookie用来携带jsessionnid

       cookie存放的数据量较小,session可以存储更多的信息

       cookie由于存放在客服端,相对于session更不安全

        由于session是存放于服务器的,当有很多客户端访问时,肯定会产生大量的session,这些session会对服务端的性能咋成影响。

 

总结:   session是一个存储于服务器的特殊对象,通过session可以实现数据共享,session有一个jessionnid,这个是session的唯一标识,使用它可以查找到session。session是会话级别的,对于每一个客户端来说独享它所拥有的session的,我们使用session在页面进行跳转,session由服务器控制。session的创建和销毁都是服务器进行管理的,服务器会为每一个客户端创建一个session。

 

token

1.token是啥?

           token,可以翻译为 令牌,本质上他是一个全局唯一的标识符,用来试别唯一的客户端。但它不像cookie和session一样是一种规范,他像是借鉴了他们的工作原理,进而延伸出来的一种维护用户状态的机制。

2.token解决了什么问题?

           token解决了session依赖于单个web服务器的问题。单体应用用户的信息保存在session中,session存在于服务器的内环境中,前前后后用户只是针对一个web服务器,所以没啥问题。但是到了集群环境下, 遇到轮询  登陆了A  下次登陆B 用户体验不好。

           

          我们也完全可以模仿它这种机制:我们可以在用户第一次请求该web服务器时或是用户登录该web服务器时,生成一个全局唯一的token返回给前端存储,同时将该用户信息存到redis中并设置有效期,之后每次请求中都在请求头中带着这个token,服务器端根据这个token到redis中查找对应的用户信息,即得到了我们所说的 "session"。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

              

 

posted @   李文浩learning  阅读(168)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示