express-session


ログイン機能を実装する前に、セッションの概念を理解しておきましょう.セッションはCookieと似ていますが、ブラウザではサーバが管理するセッションとは異なります.セッションはCookieよりも安全で、通常はログインなどの操作に使用されます.セッションを使用するには、expressjsがexpress-sessionを推奨します.

設定


端末への入力%npm insatll express-session

app.js


セッションを使用するには、オプションを渡す必要があります.必要に応じて、以下と異なるように設定できます.そうでなければ、同じように設定したほうがいいです.
  • secret
    セッションにidを送信するときにidを暗号化するために使用されるランダム文字列.他の人が見ても何の数字なのか分からない.特に、ランダム文字列を知らない場合は、復号化が困難です.ランダム文字列は露出できません.envに入れるべきでしょう?
  • import dotenv from 'dotenv';
    import session from 'express-session';
    
    dotenv.config();
    
    app.use(session({
      secret: process.env.SECRET,
      resave: false,
      saveUninitialized: true
    }));

    ビデオコントローラの例1


    セッションを使用できるようになりましたセッションはreqのプロパティとして追加されます.たとえば、「/」に接続したときにセッションを出力してみます.
    export const home = (req, res) => {
      console.log(req.session);
      res.send('home');
    }
    これで、クライアントがホームにリクエストを送信すると、コンソールは次の操作を実行できます.

    ビデオコントローラの例2

    export const home = (req, res) => {
      if(req.session.num === undefined){
        req.session.num = 1;
      }else{
        req.session.num++;
      }
      console.log(req.session.num);
      res.send('home');
    }
    上記のコードを使用すると,ユーザは家庭にアクセスするたびにreqを要求する.session.numは1を大きくし、最終的に接続数を出力します.サーバを再起動すると、セッションに格納されている値は消えます.もう一度1から始めようサーバが再起動するかどうかにかかわらず、この値を保持する場合は、データベースまたはファイルに保存する必要があります.