セッションを扱う!express-sessionを利用する方法【初心者向け】

初心者向けにNode.jsのフレームワークExpressでセッション機能を使う方法について解説しています。sessionをインストールして実際に使う構文を書きながら説明しています。自身でもプログラムを書いて理解していきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

今回は、express sessionについて解説します。

Node.js環境でexpressを使用して、セッション機能を行いたい場合に参考にしてみてください。

 

なお本記事は、TechAcademyのNode.jsオンライン講座の内容をもとに作成しています。

 

田島悠介

今回はexpress-sessionを使ってみよう。

大石ゆかり

田島メンター!express-sessionというのは何ですか~?

田島悠介

express-sessionはセッション管理を行うモジュールなんだ。まずはインストール方法と基本の形、次に実際の記述例を見ていくよ。

大石ゆかり

分かりました。お願いします!

 

Express sessionとは

Expressとは、Node.jsのフレームワークの一つです。

sessionとは、サーバー側でクライアントの状態を管理する方法です。

サーバーとはシステムを動かしているインターネット上のコンピューターです。

クライアントとはサーバーにアクセスしているパソコンやスマホです。

セッションを利用することで、同一クライアントからサーバーに何回アクセスされたか等を簡単に管理することができます。

 

Express sessionの使い方

Expressでsessionをインストール

インストールコマンド

npm install --save express-session

インストール解説

npm installでnpmを使用してexpress-sessionモジュールをインストールしています。

–saveオプションを使用することでインストール情報を保存することができます。

npmのインストール方法についての記事も合わせて参考にしてみてください。

 

田島悠介

express-sessionのインストール方法だよ。

大石ゆかり

saveオブションはpackage.jsonに情報を残すものでしたね。

田島悠介

次は基本の構文と、実際の記述の例を確認してみようか。

 

session基本構文

基本構文

インスタンス名.use(session({
  設定項目: '値',
}))

基本構文解説

インスタンス名で指定したオブジェクトに対してuseでセッションを使用することを宣言します。

sessionで処理としてはセッション処理を行うことを指定します。

2行目の設定項目: ‘値’,では、具体的にどのような処理を行うかを指定しています。

設定項目とその設定項目に設定する値をそれぞれ指定します。

 

[PR] Node.jsで挫折しない学習方法を動画で公開中

Express sessionを使ってみよう

Expressでsessionを利用する基本

ソースコード

var app = express()
app.set('trust proxy', 1)
app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true }
}))

解説

1行目の、var app = express( )では、express関数を利用してappというインスタンスを作成しています。

2行目の、app.set(‘trust proxy’, 1) では、appに最初のプロキシを信頼するという設定を行っています。

プロキシとはサーバーの一種です。

プロキシを利用する事で、インターネットのファイヤーウォールで制限された環境下でも、制限無くインターネットアクセスが可能になる等のメリットがあります。

3行目の、app.use(session({では、セッションを利用することを宣言しています。

4行目の、secret: ‘block chain’,では、block chain をキーとしてクッキーを暗号化する設定をしています。

クッキーとはクライアント側に保存される管理用の変数のようなものです。

変数とは値を入れる箱のようなものです。

5行目の、resave: false,では、セッションチェックを行うたびにセッションを作成するかどうかの指定です。falseにすることで、毎回セッションを作成しないように指定します。

6行目の、saveUninitialized: true,では、未初期化状態のセッションを保存するかどうかの指定です。保存する場合はtrueを指定します。

7行目の、cookie: { secure: true }では、Cookieの有効期限をミリ秒で設定します。指定なし、もしくはnullだとブラウザデフォルトの挙動(一般的にはブラウザを閉じたらCookie削除)になります。

8行目の、}))では、3行目の処理を終了しています。

 

今回は、express sessionについて解説しました。

実際の開発現場でインターネットアクセスが制限される場合などに、プロキシサーバーを利用したい場合に参考にしてみてください。

 

田島悠介

具体的な書き方の例を見てみたよ。

大石ゆかり

クッキーの有効期限なども、ここで設定するんですね。

田島悠介

セッションやクッキーに関する機能は、ログイン画面を実装する際などに必要になるので覚えておこう。

大石ゆかり

なるほど、Webアプリを作るときには必須になりそうですね。ありがとうございました!

 

また、オンラインのプログラミングスクールTechAcademyでは、Node.jsオンライン講座を開催しています。

Node.jsを使ってWebアプリケーションを開発することができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

この記事を監修してくれた方

中本賢吾(なかもとけんご)
アジマッチ有限会社 代表取締役社長

開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。

その他にも地域の職業プログラマー育成活動を行い、2018年には小学生がUnityで開発したオリジナルAndroidアプリをGooglePlayでリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。