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

简介: 这篇文章介绍了在Nest.js中如何使用Session来记录客户状态。文章首先解释了Session的概念,然后详细说明了如何在Nest.js中安装和使用express-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 存储
  }),
);

参数说明

属性 类型 默认值 是否必填 描述
secret string - 用于加密 session ID 的秘密字符串。强烈建议使用一个足够长且随机的字符串
resave boolean true 是否在每次请求时保存 session,即使 session 没有更改。通常设置为 false 以提高性能
saveUninitialized boolean true 是否为尚未初始化的 session 创建新的 session 对象。通常设置为 false 以避免不必要的数据库写入
name string connect.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';
    }
    
  2. 使用 @Session 修饰器:

    import {
          Controller, Get, Session } from '@nestjs/common';
    import {
          Request } from 'express';
    
    @Get()
    findAll(@Session() session: SessionInfo) {
         
    session.username = 'admin';
    }
    

常用方法

  1. 设置会话数据:
    session.userName = 'admin'
    
  2. 获取会话数据:
    session.userName // admin
    
  3. 删除会话数据
    delete session.userName;
    
  4. 销毁整个会话
    session.destroy();
    
相关文章
|
29天前
|
自然语言处理 JavaScript 前端开发
深入理解JavaScript中的闭包:原理与实战
【10月更文挑战第12天】深入理解JavaScript中的闭包:原理与实战
|
1月前
|
JavaScript
Node.js GET/POST请求
10月更文挑战第6天
34 2
Node.js GET/POST请求
|
1月前
|
机器学习/深度学习 自然语言处理 JavaScript
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
在信息论、机器学习和统计学领域中,KL散度(Kullback-Leibler散度)是量化概率分布差异的关键概念。本文深入探讨了KL散度及其相关概念,包括Jensen-Shannon散度和Renyi散度。KL散度用于衡量两个概率分布之间的差异,而Jensen-Shannon散度则提供了一种对称的度量方式。Renyi散度通过可调参数α,提供了更灵活的散度度量。这些概念不仅在理论研究中至关重要,在实际应用中也广泛用于数据压缩、变分自编码器、强化学习等领域。通过分析电子商务中的数据漂移实例,展示了这些散度指标在捕捉数据分布变化方面的独特优势,为企业提供了数据驱动的决策支持。
57 2
信息论、机器学习的核心概念:熵、KL散度、JS散度和Renyi散度的深度解析及应用
|
19天前
|
JavaScript 前端开发 开发者
探索JavaScript原型链:深入理解与实战应用
【10月更文挑战第21天】探索JavaScript原型链:深入理解与实战应用
26 1
|
1月前
|
SQL 前端开发 JavaScript
Nest.js 实战 (十五):前后端分离项目部署的最佳实践
这篇文章介绍了如何使用现代前端框架Vue3和后端Node.js框架Nest.js实现的前后端分离架构的应用,并将其部署到生产环境。文章涵盖了准备阶段,包括云服务器的设置、1Panel面板的安装、数据库的安装、域名的实名认证和备案、SSL证书的申请。在部署Node服务环节,包括了Node.js环境的创建、数据库的配置、用户名和密码的设置、网站信息的填写、静态网站的部署、反向代理的配置以及可能遇到的常见问题。最后,作者总结了部署经验,并希望对读者有所帮助。
120 11
|
1月前
|
存储 JavaScript 前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
|
12天前
|
前端开发 JavaScript
JavaScript新纪元:ES6+特性深度解析与实战应用
【10月更文挑战第29天】本文深入解析ES6+的核心特性,包括箭头函数、模板字符串、解构赋值、Promise、模块化和类等,结合实战应用,展示如何利用这些新特性编写更加高效和优雅的代码。
26 0
|
28天前
|
JavaScript
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(二)
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
27 0
|
28天前
|
存储 JSON JavaScript
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
Node.js单点登录SSO详解:Session、JWT、CORS让登录更简单(一)
81 0
|
1月前
|
JavaScript 前端开发 UED
JavaScript 地址信息与页面跳转
JavaScript 地址信息与页面跳转
35 0