LoginSignup
1
0

More than 1 year has passed since last update.

Express + TypeScriptでexpress-sessionを利用する

Posted at

初めに

Express + TypeScriptで開発を行う際に、sessionの設定方法がJavascriptと異なっていたため備忘録として投稿する。

環境

■ Nodeのバージョン
14.14.0
■ 使用OS
MacOS Big Sur:バージョン11.6
■ expressのバージョン
4.16.1
■ @types/express-sessionのバージョン
1.17.4
■ express-sessionのバージョン
1.17.2

設定方法

使用するパッケージをインストールする。
JavaScriptでは、express-sessionのみインストールしていたが、TypeScriptで使用するには@types/express-sessionが必要。

npm i express-session @types/express-session

app.tsに下記の記載を行う。

var session = require('express-session');
declare module 'express-session' {
  interface SessionData {
      user: any,
      like_arr: any
  }
}

var session_opt = {
  secret: 'secret',
  cookie: {maxAge: 60 * 60 * 1000}
};
app.use(session(session_opt));

アンビエント宣言内に、使用したいオブジェクトを追加することでTypeScriptにも対応できる。
session_optという変数には、cookieの有効時間等の情報を格納する。

使用例


import express from 'express';
const router = express.Router();
router.post('/sign_in', (req: express.Request , res: express.Response, next: express.NextFunction) =>  {
  (async () => {
      req.session.user = result;
      req.session.like_arr = like_arr;
      req.session.save();
      res.redirect('/');
    });
  })();
});

reqの型は、インポートしたexpressのRequestに設定することでsessionを使用可能。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0