即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

几种保持登录状态的方式

1.三种保持会话的方式

1.1.(一)session机制保持会话

1.2.使用方法可以看 白话讲session

1.3.存在的问题

  • 高并发情况下,会占用服务器大量内存
  • 分布式(一个业务分成几个子业务,部署在多个服务器)或者集群(一个业务部署在多个服务器)的时候,session不能共享。

1.4.解决方案

  • 高并发的时候可以将session存储到redis,如果用户长时间没有访问,将session存储到redis,就减少了服务器的压力。
  • 分布式或者集群的时候,先通过redis来判断用户状态也可以实现session共享.

1.5.(二)cookie机制保持会话

1.6.使用的方法

  • 登录验证后,创建登录凭证(比如:用户id+登录时间+过期时间),将登录凭证进行加密(为了避免暴露信息),加密后写到浏览器的cookie,以后,每次请求都发送cookie,服务器根据对应的解密算法对其进行验证(或者将加密过的cookie内容存储到数据库,请求服务器的时候,服务器在数据库进行查找)。

1.7.存在的问题

  • 每次访问都提交cookie,增加请求量
  • 其他访问可能需要cookie(比如说购物车的信息存放在cookie),浏览器对每个域存储的cookie的大小有限制,那么需要控制加密后的凭证。

1.8.(三)token机制保持会话

1.9.使用方法

  • cookie 和session依赖于浏览器,如果客户端不是浏览器,那么需要手动添加token(和cookie类似,也是登录凭证),将token添加到http header或者做为参数添加到url。

1.10.存在的问题

  • 每次访问的时候手动添加token
  • 和cookie 的方式一样增加了请求量

2.总结

2.1.不同的方式适合不同的应用场景,视情况使用。

2.2.相同点

  • 所有的方式目的都是为了验证用户状态。
  • 都需要在客户端存储凭证。

2.3.不同点

  • 第一种是通过是通过空间换时间,消耗内存存储session对象,但是判断用户状态不用复杂的逻辑。第二种第三种用时间换空间,在服务器端逻辑处理进行判断用户状态。

2.4.我觉得分享是一种精神,分享是我的乐趣所在,不是说我觉得我讲得一定是对的,我讲得可能很多是不对的,但是我希望我讲的东西是我人生的体验和思考,是给很多人反思,也许给你一秒钟、半秒钟,哪怕说一句话有点道理,引发自己内心的感触,这就是我最大的价值。(这是我喜欢的一句话,也是我写博客的初衷)

转载请注明:CodingBlog » 几种保持登录状态的方式

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情