12345678910111213141516171819202122232425 |
- import { Inject, Injectable, NestMiddleware } from '@nestjs/common';
- import { Request, Response, NextFunction } from 'express';
- import * as session from 'express-session';
- import * as redis from 'redis';
- import { RedisStore } from 'connect-redis';
- import { RedisClientType } from 'redis';
- import { RedisService } from '@/shared/redis.service';
- @Injectable()
- export class SessionMiddleware implements NestMiddleware {
- constructor(@Inject(RedisService) private readonly redisService: RedisService) {}
- use(req: Request, res: Response, next: NextFunction) {
- return session({
- store: new RedisStore({ client: this.redisService.redisClient }), // 使用 Redis 存储 Session
- secret: '2129!xxxks', // 用于签名 Session ID 的密钥
- resave: false, // 是否强制保存 Session
- saveUninitialized: false, // 是否保存未初始化的 Session
- cookie: {
- secure: false, // 如果使用 HTTPS,设置为 true
- maxAge: 1000 * 60 * 30, // Session 过期时间(30 分钟)
- },
- })(req, res, next);
- }
- }
|