登录逻辑联合redis

打印 上一主题 下一主题

主题 571|帖子 571|积分 1713

1. 用户登录

  

  • 用户访问登录页面,输入用户名和密码,提交表单。
  • 服务端验证用户名和密码:

    • 如果验证成功,天生 ticket,并将 ticket 和用户 ID 存储在缓存中(如 Redis)。
    • 将 ticket 放入 Cookie 中,设置 Cookie 的有效期(如 7 天)。
    • 返反响应给浏览器,浏览器存储 Cookie。

  2. 浏览器存储 Cookie

  

  • 浏览器收到响应后,将 Cookie 存储在本地。
  • 下次访问时,浏览器会自动将 Cookie 附加到请求头中,发送给服务端。
  3. 拦截器处理请求

  

  • 拦截器从请求的 Cookie 中提取 ticket:

    • 如果 ticket 不存在或无效,跳转到登录页面。
    • 如果 ticket 有效,从缓存中查询对应的用户 ID。
    • 通过用户 ID 查询用户信息(如用户名、头像等)。
    • 将用户信息放入 Model 中。

  4. 模板引擎渲染 HTML

  

  • 模板引擎根据 Model 中的数据,动态天生 HTML 页面。
  • 比方,如果 Model 中包含用户信息,模板引擎会天生类似以下的 HTML:
    html
    复制
    1. <div>欢迎,{{username}}</div>
    复制代码
    运行 HTML
  5. 返回 HTML 给浏览器

  

  • 服务端将渲染后的 HTML 页面返回给浏览器。
  • 浏览器分析 HTML 并显示内容。
  6. 浏览器显示用户信息

  

  • 如果用户已登录,页面会显示用户的登录信息(如“欢迎,用户名”)。
  • 如果用户未登录,页面会显示登录链
  
  
  
  3. Cookie 和 Session 的区别

  特性CookieSession存储位置客户端(浏览器)服务器端数据安全性较低(数据存储在客户端,可能被篡改或窃取)较高(数据存储在服务器端,客户端只生存 ID)存储巨细较小(通常不凌驾 4KB)较大(受服务器内存或存储限制)性能影响无(数据存储在客户端)有(数据存储在服务器端,可能占用资源)生命周期可设置有效期(浏览器关闭后仍可保留)通常随浏览器关闭或超时失效适用场景存储少量非敏感数据(如用户偏好设置)存储敏感数据(如用户登录状态)  
  
  
  
  4. 为什么选择 Cookie 或 Token 而不是 Session

  (1)分布式系统的需求

  

  • 现代应用通常是分布式的,用户的请求可能被分发到差别的服务器。
  • 使用 Session 需要在多个服务器之间共享数据,而 Cookie 或 Token 是无状态的,更得当分布式系统。
  (2)性能优化

  

  • Session 需要频繁访问数据库或缓存,而 Cookie 或 Token 只需验证其有效性,性能更高。
  (3)简化架构

  

  • 使用 Cookie 或 Token 可以制止引入复杂的 Session 管理机制(如分布式缓存),简化系统架构。
  (4)安全性

  

  • Cookie 可以通过 HttpOnly 和 Secure 标志增强安全性。
  • Token(如 JWT)可以通过签名和加密包管数据的完备性和安全性。
  使⽤Redis存储验证码 当⽤户点击革新验证码时,服务端⾸先给当前需要登陆的游客,设置⼀个随机字符串(kaptchaOwner),⽤于标识 当前这个游客,然后将随机字符串存⼊到cookie中,返回给浏览器,然后服务端的redis生存 key:随机字符串, value:验证码 。 接着⽤户输⼊⽤户名,密码,验证码,再次点击登陆时,服务端会从cookie中拿到kaptchaOwner,通过它,可以从 Redis中得到正确的验证码,然后与⽤户输⼊的验证码做⽐较,看是否⼀致。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! 更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦应逍遥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表