如何将不同的Passport策略重构为自己的文件

问题描述

这时,我只有一个文件,具有用于本地和第三方身份验证的多种通行证策略。我现在正在尝试将每个策略重构为自己的文件,但这会引发很多错误

我尝试过这个:

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

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

但这会引发“身份验证策略必须具有名称错误

我该如何解决

解决方法

这就是我将策略抽象到自己文件中的方式。另外请注意,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;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...