Реализация Feathers Auth0 не предоставляет auth0Id и информацию о профиле - PullRequest
0 голосов
/ 31 марта 2020

Мы используем Feathers и их реализацию Auth0 в нашем приложении, основываясь на следующем фрагменте кода из их поваренной книги .

class Auth0Strategy extends OAuthStrategy {
  async getEntityData(profile) {
    const baseData = await super.getEntityData(profile);

    console.log(baseData); // Empty object
    console.log(profile); // Empty object

    return {
      ...baseData,
      email: profile.email
    };
  }
}

module.exports = app => {
  const authentication = new AuthenticationService(app);

  authentication.register('jwt', new JWTStrategy());
  authentication.register('local', new LocalStrategy());
  authentication.register('auth0', new Auth0Strategy());

  app.use('/authentication', authentication);
  app.configure(expressOauth());
};

Ниже описан наш конфигурационный файл по умолчанию. json выглядит так:

"oauth": {
      "redirect": "/",
      "auth0": {
        "key": "<key>",
        "secret": "<secret>",
        "subdomain": "<subdomain>"
      }
    }

Когда пользователь впервые входит в приложение со страницы входа в Auth0, поток работает отлично.

Однако, когда пользователь входит в систему впоследствии приложение и Auth0 не отображает страницу входа (так как пользователь кэшируется в браузере), baseData и profile (консоль, зарегистрированная выше) отображаются как пустые объекты. Из-за этого поток всегда создает нового пользователя в базе данных вместо обращения к существующему пользователю в базе данных после перенаправления Auth0 обратно на сервер Feathers.

Как мы можем быть уверены, что мы всегда получаем auth0Id в baseData и profile в этом потоке?

...