【Node.js】セッションを使いたかった為express-sessionを試行した

研究
OLYMPUS PEN E-PL9 (c)Maya
この記事は約3分で読めます。

この記事は1年前の記事です。当時の情報、理解に基づいておりますのでご留意ください

例によって

例によってSNSライクなグループウェア的サイトを試作します。
ログイン済か否かをセッションで判別したかった為、express-sessionを試行します。
利用する環境はこちらの拙稿の環境です。

【Node.js】MySQLとの連携を試す
はじめに例によって参考サイトと首っぴきです。YAMLファイルで叱られました$ docker-compose up -dERROR: The Compose file './docker-compose.y...
[node.js]express-sessionでセッションを使用してみた - Qiita
expressでアプリケーションを作る際にsessionを使う 自分がチャットアプリケーションを作る際にログイン時にセッションを使いたかったので。 とりあえず、express-sessionの使い方から学んできたい。 とりあえず...

参考資料は上記。

インストールしてみます

dockerコンテナが動いている状態でシェルにて以下のコマンドを走らせます。

$ docker-compose run --rm app npm install --save-dev express-session

src/app.js に適宜設定情報を追加します。

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var session = require('express-session'); // ←追加
var logger = require('morgan');

// (略)

var app = express();

app.use(session({
  secret: 'secret',
  resave: false,
  saveUninitialized: true,
  cookie:{
    httpOnly: false,
    secure: false,
    maxage: 1000 * 60 * 30
  }
}));

//(略)

app.use('/', indexRouter);
app.use('/users', usersRouter);

app.use(session(… は app.use(‘/’, indexRouter); の前に書かなくてはなりません。
さっき引っ掛かりましたw

あとオンメモリですとサーバが再起動した場合に容易くセッションが飛んでしまうので、セッションストアを利用します。

[Node.js][Express]セッションを使う
var MySQLStore = require('express-mysql-session')(session);

var options = {
  host: 'mysql',
  port: 3306,
  user: 'root',
  password: 'password',
  database: 'todo'
};

var sessionStore = new MySQLStore(options);

app.use(session({
  secret: 'secret',
  resave: false,
  saveUninitialized: true,
  cookie:{
    httpOnly: false,
    secure: false,
    maxage: 1000 * 60 * 30
  },
  store: new MySQLStore(options),
}));

こちらに従いapp.jsに追加。
明日からアカウント登録を積んでみます。

コメント

タイトルとURLをコピーしました