えぐろぐ

https://twitter.com/eggpogg

TypeScript x Express x Session の実装

ちょくちょく express-session を使うのだけど実装方法を、
その都度調べながらやっているので、やり方をメモ... 📝

SessionOptionsを書き換えて使う

// session.ts

import * as express from 'express';
import * as ExpressSession from 'express-session';
import { createClient, RedisClient } from 'redis';
import * as connectRedis from 'connect-redis';

const redisClient: RedisClient = createClient({
  host: process.env.REDIS_HOST,
  port: parseInt(process.env.REDIS_PORT),
  prefix: process.env.REDIS_PREFIX,
});
const SessionRedisStore: connectRedis.RedisStore = connectRedis(ExpressSession);
const redisStore: connectRedis.RedisStore = new SessionRedisStore({
  client: redisClient,
});

const sessionOption: ExpressSession.SessionOptions = {
  secret: process.env.REDIS_SECRET,
  resave: true,
  saveUninitialized: false,
  store: redisStore,
};

const session: express.RequestHandler = ExpressSession(sessionOption);
export default session;

使い方

// index.ts

import session from './session'
const app = express()
app.use(session)