- 创建项目
- Nest 控制器
- nest 配置路由请求数据
- Nest 服务
- Nest 模块
- 配置静态资源
- 配置模板引擎
- Cookie 的使用
- Session 的使用
- 跨域,前缀路径、网站安全、请求限速
- 管道、守卫、拦截器、过滤器、中间件
- 一例看懂中间件、守卫、管道、异常过滤器、拦截器
- 数据验证
- 配置抽离
- 环境配置
- 文件上传与下载
- 实现图片随机验证码
- 邮件服务
- nest 基于 possport + jwt 做登陆验证
- 对数据库的密码加密:md5 和 bcryptjs
- 角色权限
- 定时任务
- 接入 Swagger 接口文档
- nest 连接 Mongodb
- typeORM 操作 Mysql 数据库
- nest 统一处理数据库操作的查询结果
- 数据库实体设计与操作
- typeorm 增删改查操作
- typeorm 使用事务的 3 种方式
- typeorm 一对一关系设计与增删改查
- typeorm 一对多和多对一关系设计与增删改查
- typeorm 多对多关系设计与增删改查
- nest 连接 Redis
- 集成 redis 实现单点登录
- Q:nestJS 注入其他依赖时为什么还需要导入其 module
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Session 的使用
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论