使用db进行Loopback 4身份验证

问题描述 投票:3回答:1

我正在尝试使用本教程https://github.com/strongloop/loopback-next/blob/master/packages/authentication/README.md对我的loopback4项目实现授权现在在名为auth-strategy.provider的文件的提供者部分上,在verify方法上,我想用mongoDB验证用户名。我已经在项目上拥有存储库和数据库访问权限。我的问题是如何从代码的这一部分访问数据库?

typescript authorization loopbackjs angular-loopback
1个回答
4
投票

您可以在提供者的构造函数中注入您的存储库,然后比较密码以检查它是否正常如下:

  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);
  }
}

此代码只是一个示例,通常密码应该在数据库中进行哈希处理。

© www.soinside.com 2019 - 2024. All rights reserved.