Мы используем 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
в этом потоке?