Как преобразовать различные стратегии паспортов в их собственные файлы

#passport.js #passport-local #passport-facebook #passport-google-oauth

#passport.js #паспорт-локальный #passport-facebook #passport-google-oauth

Вопрос:

На данный момент у меня есть один файл с несколькими стратегиями паспортов для локальной и сторонней аутентификации. Сейчас я пытаюсь преобразовать каждую стратегию в свой собственный файл, но это выдает кучу ошибок.

Я попробовал это :

 passport.use("local-signup", signupStrategy); //in the main file and 

const signupStrategy = require('passport-local').Strategy({//function}); //in the other file

  

Но это приводит к ошибке «стратегии аутентификации должны иметь имя».

Как мне это исправить?

Ответ №1:

Вот как я абстрагирую стратегии в их собственные файлы. Также обратите внимание, что имя стратегии, указанное в passport.use('local-signup') , должно совпадать с именем в passport.authenticate('local-signup') маршруте.

main.js

 // Require your strategies
const LocalStrategy = require('passport-local').Strategy;
// Require all the strategy callbacks
const localSignUpStrategy = require('./strategies/localSignup');

// Strategy configurations
passport.use('local-signup', new LocalStrategy(localSignUpStrategy));
  

localSignup.js

 const localSignUpStrategy = async (username, password, done) => {
  try {
    const { dataValues: user } = await User.findOne({ where: { username } }) || {};
    // Send found user ID
    return done(null, user);
  } catch (err) {
    return done(err);
  }
};

module.exports = localLoginStrategy;