node --- > [express] cookie/session 机制与 中间件的使用(路由守卫)

说明

  • 源代码
  • 记忆、遗忘回顾
  • 使用 cookie/session 机制,让 客户端/服务器 的访问变得有状态

cookie 与 session

  • 由于 HTTP 协议的无状态性,当一次连接断开后. 服务器并不会记录用户是否登录. 因此需要引入 cookie/session 机制

cookie

cookie: 浏览器在电脑硬盘中开辟的一块空间,主要供服务器端存储数据

  • cookie 中的数据是以域名的形式进行区分的.

  • cookie 中的数据是有过期时间的,超过时间数据会被浏览器自动删除.

  • cookie 中的数据会随着请求被自动发送到服务器

    1.客户端第一次向服务器端发送请求的时候,是不存在 cookie 的.
    2.服务端验证客户端,会响应一个 cookie 给客户端.
    3.客户端验证通过后,在发送请求会自动带上 cookie


session

session:实际上就是一个对象,存储在服务器端的内存中,在 session 对象中也可以存储多条数据,每一条数据都有一个 sessionid 做为唯一标识.

注意:cookie 在客户端的磁盘中,session 在服务端的内存中


cookie 和 session 的使用(理论)

  1. [client] --> 邮件地址、密码 --> [server]
  2. server 端,对邮箱地址、密码进行验证,若通过则生成 sessionid
  3. [client] <-- sessionid(存储在客户端的 cookie 中) <-- [server]
  4. 客户端再次登录
  5. [client] --> cookie [server]
  6. 服务端,获取 cookie 中的 sessionid,验明身份后,响应数据

实战: cookie 与 session

  • 配置获取POST请求参数
// 配置获取post参数
const bodyParser = require('body-parser')
// extended: false 方法内部使用querystring模块处理请求参数的格式
// extended: true  方法内部使用第三方模块qs处理请求参数的格式
// 拦截所有请求
app.use(bodyParser.urlencoded({
   
    extended: false }))
  • 验证成功后,生产session信息
const User = require('../../model/user')
const session = requier('express-session')
app.use(session({
   
    secret: 'secret key' }))
admin.post('/login', async (req, res) => 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值