Паспорт сериализации пользователя: следующий не является функцией - PullRequest
0 голосов
/ 13 февраля 2019

У меня проблема с koa-passport.Я использую аутентификацию Azure B2C и получаю следующую ошибку:

  TypeError: next is not a function
      at p.then.cont (/my-custom-path/node_modules/koa-passport/lib/framework/koa.js:150:16)
      at process._tickCallback (internal/process/next_tick.js:68:7)

похоже, что проблема возникает сразу после того, как done() обратный вызов passport.serializeUser

Здесьмой passport.ts:

import { Repository } from 'typeorm';
import { validate, ValidationError } from 'class-validator';
import { User, getManager } from 'my-project-shared';
import * as passport from 'koa-passport';
import { OIDCStrategy } from 'passport-azure-ad';

...

const azureOIDCOptions = {
  identityMetadata,
  clientID,
  isB2C: true,
  validateIssuer: true,
  loggingLevel: 'info',
  responseType: 'id_token',
  responseMode: 'query',
  allowHttpForRedirectUrl: true, 
  redirectUrl,
  passReqToCallback: false,
}

/**
 * Sign in using Azure B2C for Web
 */
passport.use(new OIDCStrategy(azureOIDCOptions, async (profile, done) => {
  console.log('AZURE B2C')
  // get a user repository to perform operations with user
  const userRepository: Repository<User> = getManager().getRepository(User);
  const userToBeSaved: User = new User();

  userToBeSaved.firstName = profile.name.givenName;
  userToBeSaved.lastName = profile.name.familyName;
  userToBeSaved.email = profile.emails[0];

  // validate user entity
  const errors: ValidationError[] = await validate(userToBeSaved); // errors is an array of validation errors

  if (errors.length === 0) {
    try {
      const user = await userRepository.save(userToBeSaved);
      done(null, user.id);
    } catch (e) {
      done(e)
    }
  }
}));

passport.serializeUser((user, done) => {
  console.log('serialize', user);
  done(null, user)
})

passport.deserializeUser(async (userId, done) => {
  console.log('deserialize');
  const userRepository: Repository<User> = getManager().getRepository(User);
  const user: User = await userRepository.findOne(userId);

  return user;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...