Loopback 4 аутентификация с использованием БД

Я пытаюсь внедрить авторизацию в свой проект loopback4, используя этот учебник https://github.com/strongloop/loopback-next/blob/master/packages/authentication/README.md Теперь на стороне провайдера в файле с именем auth-стратегии.provider, в методе verify я хочу проверить имя пользователя с помощью mongoDB. У меня уже есть хранилище и доступ к базе данных по проекту. У меня вопрос, как мне получить доступ к базе данных из этой части кода?

1 ответ

Вы можете добавить свой репозиторий в конструктор вашего провайдера, а затем сравнить пароль, чтобы убедиться, что это нормально, вот так:

  import {repository} from '@loopback/repository';

  export class MyAuthStrategyProvider implements Provider<Strategy | undefined> {
  constructor(
    @inject(AuthenticationBindings.METADATA)
    private metadata: AuthenticationMetadata,
    @repository(UserRepository) protected userRepository: UserRepository,
  ) {}

  [...]

  verify(
    username: string,
    password: string,
    cb: (err: Error | null, user?: UserProfile | false) => void,
  ) {
    let user = await this.userRepository.findOne({where: {username: username}});
    if(!user || user.password !== password)
         return cb(null, false);
    cb(null, user);
  }
}

Этот код является лишь примером, в общем случае пароль должен быть хеширован в базе данных.

Другие вопросы по тегам