返回介绍

Session 的使用

发布于 2024-01-18 21:56:28 字数 2103 浏览 0 评论 0 收藏 0

session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 session 保存在服务器上

当浏览器访问服务器并发送第一次请求时,服务器端会创建一个 session 对象,生成一个类似于 key,value 的键值对, 然后将 key(cookie) 返回到浏览器(客户) 端,浏览器下次再访问时,携带 key(cookie),找到对应的 session(value)。 客户的信息都保存在 session 中

安装 express-session

npm i express-session --save
npm i -D @types/express-session --save
// main.ts

import { AppModule } from './app.module';
import { NestExpressApplication } from '@nestjs/platform-express';
import * as session from 'express-seesion'

async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);
  
  //配置 session
  app.use(session({
      secret: 'dmyxs',
      cookie: { maxAge: 10000, httpOnly: true },  //以 cookie 存储到客户端
      rolling: true //每次重新请求时,重新设置 cookie
  }))
  
  await app.listen(3000);
}
bootstrap();

session 相关配置参数

  • secret String 生成 session 签名的密钥
  • name String 客户端的 cookie 的名称,默认为 connect.sid , 可自己设置
  • resave Boolean 强制保存 session 即使它并没有变化, 默认为 true , 建议设置成 false
  • saveUninitalized Boolean 强制将未初始化的 session 存储。当新建了一个 session 且未设定属性或值时,它就处于 未初始化状态。在设定一个 cookie 前,这对于登陆验证,减轻服务端存储压力,权限控制是有帮助的。默认: true , 建议手动添加
  • cookie Object 设置返回到前端 cookie 属性,默认值为 { path: ‘/’, httpOnly: true, secure: false, maxAge: null }
  • rolling Boolean 在每次请求时强行设置 cookie ,这将重置 cookie 过期时间, 默认为 false

接口中设置 session

@Get()
  index(@Request() req){
    //设置 session
    req.session.username = 'poetry'
}

获取 session

@Get('/session')
  session(@Request() req, @Session() session ){
    //获取 session:两种方式
    console.log(req.session.username)
    console.log(session.username)
    
    return 'hello session'
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文