Express.jsでセッション情報を処理する方法

Express.jsでセッション情報を処理する方法を紹介します。コードもGit Hubに掲載するので参考にしてください。

概要

Express.jsでは、セッション情報の処理はミドルウェア関数内で行います。
ミドルウェア関数の引数には、requestオブジェクトとresponseオブジェクトが渡されます。 これらのオブジェクトを使用して、セッションに関連するデータの取得やレスポンスの生成などを行います。

ここでは、以下バージョンを使用した、Express.jsでセッション処理する方法を説明します。

Express.js v4.17.1
nodejs v19.7.0
express-session v1.17.2

また、今回作成するコードは全て、GitHubに掲載しています。

なお、本記事では、express-sessionモジュールを使用するため以下コマンドを入力して、express-sessionをインストールしてください、

npm install express-session

セッション情報を取得する方法

セッションに関する情報を取得するには、express-sessionミドルウェアとリクエストオブジェクトを使用します。 express-sessionは、クライアントからのリクエストに含まれるセッション情報を解析します。解析されたセッションはリクエストオブジェクトのsessionプロパティに格納されます。

以下のサンプルコードは、Express.jsでセッションを理解するための例です。GETリクエストを受け取り、リクエストに含まれるセッションにアクセスして、それらの値を含むレスポンスを返します。

session.js

const express = require('express');
const session = require('express-session');
const app = express();

app.use(session({
  secret: 'your secret',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true }
}));

app.get('/', (req, res) => {
  // セッションの取得
  const sess = req.session;

  const response = {
    session: sess
  };

  res.json(response);
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

解説

  • Expressとexpress-sessionのインスタンスの作成
const express = require('express');
const session = require('express-session');
const app = express();

Expressモジュールとexpress-sessionモジュールをインポートし、そのインスタンスを作成します。

  • express-sessionのミドルウェア関数の使用
app.use(session({
  secret: 'your secret',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true }
}));

express-sessionのミドルウェア関数を使用します。これにより、リクエストに含まれるセッション情報は自動的に解析され、req.sessionに格納されます。

  • ルートハンドラの定義
app.get('/', (req, res) => {
  // セッションの取得
  const sess = req.session;

  const response = {
    session: sess
  };

  res.json(response);
});

ルート(’/’)へのGETリクエストをハンドリングします。リクエストが来ると、リクエストに含まれるセッション情報を取得し、それを含むオブジェクトをJSON形式でレスポンスとして返します。

  • サーバーの起動
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

Expressのインスタンスをポート3000でリッスンさせ、サーバーを起動します。サーバーが起動したら、“Server is running on port 3000"というメッセージをコンソールに出力します。

テスト

curl http://localhost:3000

このコマンドで、セッション情報を含むリクエストを送ります。

まとめ

この記事では、Express.jsを使用してセッション情報を処理する方法を紹介しました。具体的には、express-sessionミドルウェアを使用してリクエストに含まれるセッション情報を取得し、それをレスポンスとして返す方法を示しました。セッション情報はWebアプリケーションで非常に重要な役割を果たしますので、その取扱いを理解することは重要です。この記事がその理解に役立つことを願っています。