HTTP 会话提供了一种跨多个请求存储用户信息的方法,这对 MVC 应用程序特别有用。
第一步:安装依赖
$ npm i express-session $ npm i -D @types/express-session
第二步:全局加载中间件
//main.ts
import * as session from 'express-session';
app.use(
session({
secret: 'my-secret',
resave: false,
saveUninitialized: false,
cookie: {maxAge: 10000, httpOnly: true}, //以cookie存储到客户端
rolling: true // 每次重新请求时,重新设置cookie
}),
);设置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()
findAll(@Req() request: Request) {
request.session.visits = request.session.visits ? request.session.visits + 1 : 1;
}第四步:获取session
import {Req, Session} from '@nestjs/common';
@Get()
findAll(@Req() req, @Session() session ){
//获取session:两种方式
console.log(req.session.username) // 第一种
console.log(session.username) // 第二种
return 'session'
}www.haizhuan.tk