0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

いなたつAdvent Calendar 2019

Day 7

Expressでsession管理をらくらくに

Last updated at Posted at 2019-12-07

はじめに

いなたつアドカレの七日目の記事です。

今回は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を仕切りにして分けましょう

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?