网站LOGO
白雾茫茫丶
页面加载中
11月21日
网站LOGO 白雾茫茫丶
记录学习、生活和有趣的事
菜单
  • 白雾茫茫丶
    记录学习、生活和有趣的事
    用户的头像
    首次访问
    上次留言
    累计留言
    我的等级
    我的角色
    打赏二维码
    打赏博主
    Nest.js 实战 (六):使用 Session 在不同请求间存储信息
    点击复制本页信息
    微信扫一扫
    文章二维码
    文章图片 文章标题
    创建时间
  • 一 言
    确认删除此评论么? 确认
  • 本弹窗介绍内容来自,本网站不对其中内容负责。
    • 复制图片
    • 复制图片地址
    • 百度识图
    按住ctrl可打开默认菜单

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

    谢明伟 · 原创 ·
    前端开发Nest 实战 · TypeScriptNest
    共 1675 字 · 约 1 分钟 · 389
    本文最后更新于2024年08月01日,已经过了112天没有更新,若内容或图片失效,请留言反馈

    前言

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

    安装依赖

    powershell 代码:
    pnpm add express-session
    pnpm add @types/express-session -D

    全局配置

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

    ts 代码:
    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 修饰器:

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

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

    常用方法

    1. 设置会话数据:

      ts 代码:
      session.userName = 'admin'
    2. 获取会话数据:

      ts 代码:
      session.userName // admin
    3. 删除会话数据

      ts 代码:
      delete session.userName; 
    4. 销毁整个会话

      ts 代码:
      session.destroy();
    声明:本文由 谢明伟(博主)原创,依据 CC-BY-NC-SA 4.0 许可协议 授权,转载请注明出处。

    还没有人喜爱这篇文章呢

    我要发表评论 我要发表评论
    博客logo 白雾茫茫丶 记录学习、生活和有趣的事 51统计 百度统计
    MOEICP 萌ICP备20236860号 ICP 粤ICP备2023007649号 ICP 粤公网安备44030402006402号

    💻️ 谢明伟 18秒前 在线

    🕛

    本站已运行 2 年 325 天 5 小时 26 分

    🌳

    自豪地使用 Typecho 建站,并搭配 MyLife 主题
    白雾茫茫丶. © 2022 ~ 2024.
    网站logo

    白雾茫茫丶 记录学习、生活和有趣的事