Node.jsサーバ構造4:passportモジュールとログイン実装

2298 ワード

コード構造


コンソール

  • コンソールで、「npm i passport passport-local passport-kakao bcrypt」インストールモジュール
  • を入力します.

    app.js

  • モジュール導入
  • const passport = require('passport');
  • 書き込みモジュール
  • const passportConfig = require('./passport');
    3.作成したモジュールの実行
    passportConfig(); // 패스포트 설정
  • モジュールpassportメソッドをミドルウェアとして実行:
  • passport.初期化ミドルウェア:要求にpassport設定
  • をインプラントする
  • passport.sessionミドルウェア:req.passport情報はセッションオブジェクトに格納されます(ただしexpress-ssessionミドルウェアに接続する必要があります)
  • app.use(passport.initialize());
    app.use(passport.session());

    passport/index.js

  • ログインの概要
    (ログインプロセス)
    1)ルータからの登録要求
    2)ルータからpassportを取得する.authenticateメソッドの呼び出し
    3)ログインポリシーの実行
    4)ログインに成功した場合,ユーザ情報オブジェクトとともにreqを使用する.ログインコール
    5)req.ログイン方法はpassportです.SerializeUserを呼び出す
    6)req.ユーザーIDのみをセッションに保存
    7)ログイン成功
    (ログイン後のプロセス)
    1)要求を受け取る
    2)要求がルータに到達する前にpassport.sessionミドルウェアはpassportです.逆シーケンス化ユーザーメソッドの呼び出し
    3)req.セッションに格納されたアイデンティティを使用してデータベース内のユーザーを表示する
    4)クエリーを要求するユーザ情報.ユーザーに保存
    5)ルータで要求する.userオブジェクトは
  • で使用できます.
  • ログイン時の動作:ポリシー
  • モジュールと作成されたモジュール、
  • モデルのインポート
    const passport = require('passport')
    const local = require('./localStrategy');
    const kakao = require('./kakaoStrategy');
    const User = require('../models/user');
  • モジュールエクスポート+2関数
  • passport.serializeUser:
    ユーザー情報オブジェクトをセッション(req.sessionオブジェクト)として保存します.ログイン時に実行します.
  • passport.deserializeUser:
    セッションに保存されたIDを使用してユーザー情報オブジェクトを読み込みます.
    各リクエストが実行されます.passport.sessionミドルウェアはこのメソッドを呼び出します.
  • cf.done関数:
    最初のパラメータ>エラーが発生した場合に使用
    2番目の買収>保存するデータ
  • module.exports = () => {
      passport.serializeUser((user, done) => {
        done(null, user.id);
      });
      passport.deserializeUser((id, done) => {
        User.findOne({ where: { id } })
          .then(user => done(null, user))
          .catch(err => done(err));
      });
      local();
      kakao();
    };