はじめに
いなたつアドカレの七日目の記事です。
今回はexpressでsessionのチェックと管理をするためのやつです
じっそー
まずはimportしましょーねー
const express = require('express');
const app = express();
const session = require('express-session')({
secret: 'userlogin',
resave: false,
saveUninitialized: false,
cookie: null
});
sessionの各項目について説明します。
上から順に
- クッキーを暗号化するキー
- sessionを毎回生成するか
- 初期化していない時のsessionの扱い
- クッキーの有効期限
次に、appに反映させます。
app.use(session);
そしてセッションを確認するための関数です
const sessionCheck = (req, res, next) => {
if (req.session.username)
next()
else {
res.redirect('/signin');
}
};
sessionの確認で条件分岐して、うまくいくと、ページを進めます。ダメだとサインインに飛ばします。
最後にsessionCheckの有効範囲を決めます
app.use('/', signinRouter);
app.use('/', sessionCheck); // 以下のルートをチェック
app.use('/', indexRouter);
jsが上から読み込まれるため、signinRouterではsessionCheckがおこなわれず、indexRouterでのみsessionCheckがされ、無限に再帰されるといったことはありません。
今回の注意点は、sessionCheckを置く場所が一番上だと、永遠に再帰してしまい、アプリケーションが動作しません、反対に一番下にあると、全てで確認が行われないということになってしまいます。
なので、サインインが必要なページ、必要ないページをしっかりと、sessionCheckを仕切りにして分けましょう