Expressでアプリケーションを作る場合、express-sessionを使うことで簡単にセッションを利用できます。ただ、これはインメモリのセッションのため、サーバーを再起動するとセッションが消えてしまいます。そのため、ファイルのセッションを試してみました。
※ 引き続き検証中ですが状況によってうまくセッションが読み込めなかったりしています。
下記のライブラリを使いました。
yarn add session-file-store
元々あったセッションの設定を下記のようにsession-file-storeを使う形に変更します。
const session = require("express-session");
const FileStore = require("session-file-store")(session);
app.use(
session({
secret: "your secret",
store: new FileStore({
ttl: 30 * 86400
}),
expires: new Date(253402300000000),
resave: true,
saveUninitialized: false
})
);
僕が試した時は、resaveを設定しないと(最初だけ?)セッションが保存されませんでした。(とはいえresaveはデフォルトtrueとマニュアルにも書かれていますが…謎です)
もしかすると有効期限など、他の設定と影響したりしても挙動が変わってくるかもしれません。
Expressのプロジェクトでファイルに保存するセッションを試してみました。
実際はデータベースに保存したりする方が良いとは思います。でも一応mweibel/connect-session-sequelize
というパッケージはあったのですが、最新のSequelizeでは動作しないようでした。あまりそのあたりのパッケージは充実していないのでしょうか。
あとは速さを求めるならそのままインメモリのままでも良いのかもしれません。何かでデーモンが再起動してしまった時のことなどが気にはなりますが。
そういう面でもファイルは割とお手軽で良いと思います(まだがっつり動作確認はできていませんが)。不安な場合等はとりあえず開発環境だけセッションをファイルで保存するようにしておくと良いかもしれませんね。サーバーが再起動する度にログイン状態が消えたりするのは結構面倒ですし。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント