我正在尝试使用本教程https://github.com/strongloop/loopback-next/blob/master/packages/authentication/README.md对我的 loopback4 项目实施授权 现在在名为 auth-strategy 的文件的提供程序部分.provider,在验证方法上,我想用 mongoDB 验证用户名。我已经拥有该项目的存储库和数据库访问权限。我的问题是如何从这部分代码访问数据库?
问问题
2656 次
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);
}
}
这段代码只是一个示例,通常密码应该在数据库中进行哈希处理。
于 2018-12-01T16:29:23.603 回答