首页 / 知识库 / python服务端进阶 / 解析用户登录场景案例

02 - 登录到底在做什么:认证 vs 会话保持

上一章我们知道了:登录的根源问题是”服务端会失忆”。这一章,我们把”登录”这个动作本身拆开看。

很多人一提登录,脑子里就是一团糨糊:验证密码、发 token、存 session、cookie、过期……全搅在一起。其实只要你把它拆成两件独立的事,一切就清晰了。

登录 = 一次”验明正身” + 之后持续”记住你”

        ┌─────────────────────────────────────────┐
        │                 登录                      │
        └─────────────────────────────────────────┘
                   │                    │
      ┌────────────┘                    └────────────┐
      ▼                                               ▼
① 认证(Authentication)                    ② 会话保持(Session Management)
"你真的是张三本人吗?"                        "接下来我怎么一直记得你是张三?"
   只做一次                                     贯穿之后每一个请求
   看的是:用户名 + 密码                          靠的是:凭证(手环/通行证)

这两件事发生的时机、要解决的问题、用到的技术,全都不一样。分清它们,是理解登录的关键第一步。

第一件事:认证——“证明你是你”

这一步只做一次,就发生在用户点”登录”、把账号密码提交上来的那一刻。服务端要回答的问题是:

“提交这个密码的人,真的是账号的主人吗?”

它做的事很朴素:

用户提交:username = 张三, password = 123456


服务端:去数据库把"张三"这条记录捞出来
        比对:提交的密码 和 数据库里存的密码,对得上吗?

          ┌─────────┴─────────┐
          ▼                   ▼
        对得上                 对不上
      "验明正身,是本人"       "密码错误,滚"

注意:这里有个大坑——数据库里绝对不能存明文密码,存的是哈希值。这块我们放到第 08 章安全篇专门讲。现在你只需要知道:“认证 = 比对密码,确认是不是本人。”

认证一旦通过,这一步的使命就完成了。用户不可能每查一次订单就重新输一次密码,所以接下来必须靠第二件事。

第二件事:会话保持——“之后一直记得你”

认证通过后,服务端会发给用户一个凭证(上一章说的”手环”或”通行证”)。从这一刻起,进入第二件事:

“在后续的每一个请求里,凭这个凭证,重新确认你就是刚才那个通过认证的张三。”

认证通过 ──▶ 发凭证 ──▶ 用户拿着凭证

        ┌────────────────────┼────────────────────┐
        ▼                    ▼                    ▼
   GET /my/orders       GET /my/profile      POST /my/address
   带上凭证              带上凭证              带上凭证
   服务端:是张三 ✅      服务端:是张三 ✅      服务端:是张三 ✅

会话保持才是登录体系里真正复杂、真正有讲究的部分。后面 Session 和 Token 两条路线的分歧,全都发生在这一步——它们在”凭证长什么样、服务端怎么靠凭证认出你”上做了不同的选择。

为什么一定要分清这两件事?

因为很多设计上的困惑,本质都是这两件事没分清导致的。举几个例子:

你的困惑其实是在问哪件事
“密码错了怎么处理?”认证
“登录成功后返回什么给前端?”会话保持(发什么凭证)
“为什么刷新页面还是登录状态?”会话保持(凭证被浏览器带上了)
“退出登录怎么实现?”会话保持(怎么让凭证失效)
“token 过期了怎么办?”会话保持(凭证的生命周期)
“改了密码后要不要重新登录?”两件事的交界处

你会发现:认证只占登录的一小步,会话保持才是大头。 这也是为什么后面 8 章里,绝大部分篇幅都在讲会话保持相关的话题。

一张图记住整个第一部分

              第 01 章:HTTP 会失忆


          所以登录要解决"如何持续认出你"

          ┌───────────┴───────────┐
          ▼                       ▼
   ① 认证(做一次)          ② 会话保持(贯穿始终)
   验密码,证明是本人         发凭证,之后靠凭证认人

                      ┌───────────┴───────────┐
                      ▼                       ▼
                路线 A:Session          路线 B:Token
                (第 03 章)             (第 04 章)

小结

  • 登录不是一件事,而是两件事认证(验明正身,只做一次)+ 会话保持(发凭证,之后一直记得你)。
  • 认证看的是账号密码,通过后使命就完成;它只是登录里的一小步。
  • 会话保持才是登录的大头和难点,Session / Token 两条路线的所有区别都在这一步。
  • 分清这两件事后,你再看”退出、过期、刷新、改密码”这些问题,就知道它们各自属于哪一块了。

从下一章开始,我们正式进入会话保持的两条路线。先讲最经典、也最容易理解的路线 A:Session + Cookie


上一章 ← 01 - 一切的根源:HTTP 是”没有记忆”的 | 下一章 → 03 - 路线 A:Session + Cookie | 回到 README 目录