当前位置:网站首页 > 大数据架构 > 正文

NoSQL数据库(五)021-Egg+Redis+MongoDb实现登录流程——项目介绍、项目架构分析、cookie和session维持登录的原理

NoSQL数据库(五)021-Egg+Redis+MongoDb实现登录流程——项目介绍、项目架构分析、cookie和session维持登录的原理

第五章 Egg + Redis + MongoDb实现登录流程( 补充 )

项目架构图

在这里插入图片描述

学习目标

需要一些前置知识,大家可以去看Egg的视频。如果nodejs基础比较扎实的同学不看也可以,同学们根据自身情况选择。

  • 了解cookie和session的关系
  • 从前后端角度全面了解登录流程
  • 了解redis在登录流程中的作用
    • 因为用户数据和浏览器交互非常频繁,而 redis非常的快,如果使用硬盘型数据库(mongo, mysql)频繁读写可能会遇到一些性能问题。

理解登录流程对于前端来讲,非常重要!

登录流程在面试中出现的频率的非常高,因为题目比较抽象,所以你很难背诵,可以考察很多方面的知识。

比如: 你做的项目中是如何进行登录的? 如何保持登录态的?

  • http的理解
  • cookie和session的区别
  • 对数据库的理解
  • web安全性(xss, csrf)

cookie 和 session是如何维持登录的?

session是基于cookie存在的一种形式。

举个例子: 假如cookie是米,session是粥。

  1. 那么他们是同一种东西吗?
  2. 他们都是米吗?

总结: 没有米就没有粥,他们都是米,但是不是同一种东西。

所以,没有cookie就没有session。

cookie的交互过程
  1. 浏览器第一次访问服务端 (此时无cookie)
  2. 服务端收到请求, 通过response携带一个 set-cookie字段给客户端
  3. 客户端收到response之后,根据set-cookie的内容,将cookie存储在浏览器本地
  4. 客户端再次发起请求的时候,就会将cookie带给服务端
cookie维持登录的过程
  1. 用户输入用户名,密码,通过request发送给服务端
  2. 服务端去数据库查询用户名密码对不对
  3. 如果正确,假如 你的用户名是 “jack”, 服务端将在response中set-cookie为"username=jack"。
  4. 浏览器下次再发起请求的时候,将携带 “username=jack” 这一段内容给服务端
  5. 服务端拿到"username=jack"之后,去数据库一查,发现有这个人,于是认为此人已登录
session的交互过程

和cookie一致,没有cookie就没有session。

session维持登录的过程

其实首先我们要搞清楚一点,如果仅仅只是需要维持登录,根本就不需要session,使用上面的方法完全够用。

但是我们设想一种场景:

你的公司有一百个系统,你的用户名是 “我是老板”。我希望只注册一次账号,就能涉及所有的权限,登录所有的系统。但是有的人,注册一次账号只能进入某些系统。如果使用set-cookie存储,我们可能需要在用户的系统中存一个这样的字符串。“username=我是老板&&系统A=true&&系统B=true&&系统C=true。。。”。

可能今天涉及系统权限,明天还会添加每个用户的菜单权限,这样是无止尽的。而且cookie最大只能存储4k的数据,总有一天会存满,显然这种方案是不成立的。

假如我们的cookie能够存储为对象,而且不受cookie的4k大小的限制,而且能够浏览器与服务端通信,那该有多好啊!

"我是老板":{ 
    xxx1: 'xxx', xxx2: 'xxxx', ... } 

于是session诞生了。

  1. 用户输入用户名,密码,通过request发送给服务端
  2. 服务端去数据库查询用户名密码对不对
  3. 如果正确,假如 你的用户名是 “jack”, 服务端将在response中set-cookie为"username=jack"。
  4. 并且同时服务端在数据库(mondoDb, mysql)中存储一些以jack为key的对象或者数据 (购物车,权限, 登录状态 等等 )
  5. 客户端再次访问的时候,将携带 “username=jack” 这样一个cookie,服务端会拿到"jack"去查询 (购物车,权限, 登录状态 等等 )
  6. 服务器根据查询到的信息,返回不同的页面到客户端

总结: cookie是将用户数据存储在本地,session是将用户相关的数据存储到服务端。

业务流程

在这里插入图片描述

到此这篇NoSQL数据库(五)021-Egg+Redis+MongoDb实现登录流程——项目介绍、项目架构分析、cookie和session维持登录的原理的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 设置es的最大查询长度2024-11-27 18:54:08
  • 推荐强大的开源媒体播放器:MPC-BE2024-11-27 18:54:08
  • 探秘Fake SMS:一款强大的模拟短信工具2024-11-27 18:54:08
  • 城堡幻想曲圣魔大战3(Castle Fantisia)新艾伦希亚战记(即重做版) 新增剧情简介2024-11-27 18:54:08
  • 系统架构设计之数据库三级模式2024-11-27 18:54:08
  • Cesium选择地图范围【 绘制矩形 坐标转换 局部放大】2024-11-27 18:54:08
  • Cesium实现坐标转换;目标区域放大2024-11-27 18:54:08
  • Cesium资料大全2024-11-27 18:54:08
  • Podoplanin蛋白(podocin蛋白大小)2024-11-27 18:54:08
  • 泰拉瑞亚时间指令代码大全(泰拉瑞亚指令代码大全手游)2024-11-27 18:54:08
  • 全屏图片