Nest.js 实战 (六):使用 Session 在不同请求间存储信息

前言

Session 是记录客户状态的机制,为每个用户的浏览器创建的一个会话对象,今天我们来看一下怎么在 Nest.js 中使用 Session

安装依赖

pnpm add express-session
pnpm add @types/express-session -D

全局配置

安装完成后,在 main.ts 中将 express-session 配置为全局中间件:

import session from 'express-session';

// 配置 session
app.use(
  session({
    secret: 'baiwumm', // 签名
    resave: false, // 强制保存 sseion 即使它并没有变化,默认为true
    saveUninitialized: false, // 强制将未初始化的 session 存储
  }),
);

参数说明

属性类型默认值是否必填描述
secretstring-用于加密 session ID 的秘密字符串。强烈建议使用一个足够长且随机的字符串
resavebooleantrue是否在每次请求时保存 session,即使 session 没有更改。通常设置为 false 以提高性能
saveUninitializedbooleantrue是否为尚未初始化的 session 创建新的 session 对象。通常设置为 false 以避免不必要的数据库写入
namestringconnect.sid设置 session ID 的名称

更多参数请参考:Api 文档

使用方式

  1. 使用 @Req 修饰器:
import { Controller, Get, Res } from '@nestjs/common';
import { Request } from 'express';

@Get()
findAll(@Req() req: Request) {
  req.session.username = 'admin';
}
  1. 使用 @Session 修饰器:
import { Controller, Get, Session } from '@nestjs/common';
import { Request } from 'express';

@Get()
findAll(@Session() session: SessionInfo) {
 session.username = 'admin';
}

常用方法

  1. 设置会话数据:
session.userName = 'admin'
  1. 获取会话数据:
session.userName // admin
  1. 删除会话数据
delete session.userName; 
  1. 销毁整个会话
session.destroy();
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白雾茫茫丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值