前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >如何使用 session 和 cookie 实现用户认证

如何使用 session 和 cookie 实现用户认证

原创
作者头像
写bug的高哈哈
发布2024-11-03 15:29:46
发布2024-11-03 15:29:46
940
举报

为什么我们要讨论 Session 和 Cookie?

想象一下,我们日常使用的具有“会员登录”或者“网上购物”功能的网站,服务器需要识别这些不同的请求是否来自同一个客户端。但是在 HTTP 设计中,每个请求都是相互独立的,即使是同一个用户连续操作浏览器发送多个请求,前一个请求也不会认识后一个请求。因此,开发者需要利用 Session 和 Cookie 机制来帮助服务器识别特定的客户端。

餐馆和顾客

在讨论技术内容之前,我们先来聊聊你附近的餐馆。餐馆和消费者的关系就像 Session 和 Cookie 一样。你每次去餐馆消费都是独立的事件,交易完成后,老板通常不会记得你上次点了什么。但是,假设你是老板,你希望记住每位客户的购买记录,让他们一进门,你就能知道他们的喜好,你会怎么做呢?答案就是会员卡!

通过每一张独一无二的会员卡,用会员编号绑定每一位消费者,当客户上门时,只需要出示卡片,你就能从客户管理系统中调出该会员过往所有的消费记录。而这个“会员编号”,就相当于网络世界中的session id。

什么是session

Session 就像是你的会员编号。当你想要追踪同一个用户通过浏览器发出的连续请求时,你可以创建一组凭证来记录通信设备间的交流,这种机制就叫做 session。

Session就像是你的会员编号,当你需要追踪同一个用户通过浏览器发出的一系列请求时,可以通过创建一组凭证来记录设备间的交互过程,这种机制称为Session。就像餐饮店通过会员编号查找顾客的历史购买信息一样,服务器也会通过session id查找到对应的用户数据。

什么是 cookie

Cookie 就像是你手中的会员卡,卡片上有客户的专属会员编号,也就是 session id。Cookie 是浏览器内置的功能,通过这个功能,浏览器让服务器能够把 session 的信息(包括 session id)保存在浏览器的 Cookie 上。当浏览器每次向服务器发送请求时,都会附带一组 Cookie 信息,因此,服务器就能通过 Cookie 中的 session id 追踪到浏览器那头的用户是谁。

Session 与 Cookie 如何运作?

我们通过用户登录的案例来进一步讨论这两者是如何运作的。开发者会使用 session 与 cookie 来实现用户认证系统。无论是登录 Facebook 还是 Google,即便关闭了窗口又重新回到这些网站,我们通常不需要重新登录,但如果换了一台电脑,或者使用“无痕模式”操作,就必须重新登录。

我们把登录这个动作拆分成“如何登录”和“登录后发生了什么”来讨论。

用户如何登录?

以 Google 为例,当我们在登录页面输入用户邮箱或电话号码时,你所输入的数据就会被传送到 Google 网络服务的服务器,验证此账号是否存在。如果账号通过验证,下一步你需要输入账号密码进行登录,然后服务器会验证你输入的数据是否与用户数据库的内容一致。最后,如果判定结果为用户资料一致的话,你就能成功登录了!

登录后浏览器与服务器如何交互?

在你成功登录的时候,也就是浏览器对服务器发送第一次请求时,服务器端会建立一个 session,并在你的浏览器 cookie 里存储一个 session id 变量。未来服务器通过这个 session id 就知道你曾经成功登录过,而之后浏览时就能通过 cookie 里的 session id 直接对应服务器上的 session data,直接寻找有关你的资料,后续就不需要你重新登录了。

Session 会失效吗?

你可能会想,如果我把浏览器关掉,session 是不是就会失效了。或者说,有时候明明也没有登出,但系统又要求我再次登录,这究竟是怎么一回事?

如果用“会员卡”的比喻来解释,“关掉浏览器”就像把会员卡放回钱包里一样,会员记录还是会在。因此,要取消 session,一般来说有三个方法:

  1. 用户在浏览器主动删除 cookie 数据。
  2. 用户从网站上主动登出 登出时,应用程序会同步删掉浏览器刚刚使用的 session id,这就好比餐馆的客户主动打电话给老板,要求删除他的用户账号。
  3. 应用程序设置了一个失效时间 如果客户端上次使用 session 的时间,超过系统预设的失效时间 (timeout) 时,服务器就假定客户端已经停止活动,然后把原先的 session id 删除,就好比有效的会员期限,假设你在半年内没有消费记录,则会自动取消会员资格。

结语

通过本次的学习分享,我们不仅对于 Cookie 与 Session 有了更进一步的认识,也知道它们如何帮助开发者完成用户认证系统。特别是这些过程都是生活中不会留意到的小细节,也充满了许多的学问,我相信这就是网络世界有趣的地方吧。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么我们要讨论 Session 和 Cookie?
  • 餐馆和顾客
  • 什么是session
  • 什么是 cookie
  • Session 与 Cookie 如何运作?
  • 用户如何登录?
  • 登录后浏览器与服务器如何交互?
  • Session 会失效吗?
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档