import { Member } from '../models';
import { MemberRepository} from '../repositories';
import {inject, Context} from '@loopback/context';
export class MemberController {
constructor(
@repository(MemberRepository) private memberRepository: MemberRepository,
@Inject('utilities.PasswordHasher') private passwordHasher: PasswordHasher,
) { }
}
收到此错误。
src/controllers/member.controller.ts:27:65 - error TS2304: Cannot find name 'PasswordHasher'.
27 @Inject('utilities.PasswordHasher') private passwordHasher: PasswordHasher,
src/controllers/member.controller.ts:27:65 - error TS4063: Parameter 'passwordHasher' of constructor from exported class has or is using private name 'PasswordHasher'.
27 @Inject('utilities.PasswordHasher') private passwordHasher: PasswordHasher,
我可以使用哪个模块来实现此目的?
最佳答案
我这样做:
import {Entity, model, property} from '@loopback/repository';
const crypto = require('crypto');
@model()
export class User extends Entity{
[...]
@property({
type: 'string',
required: false
})
private hashedPassword: string;
@property({
type: 'string'
})
private salt: string;
set password(password: string){
if(!this.salt || !this.salt.length){
this.salt = crypto.randomBytes(32).toString('hex');
}
this.hashedPassword = this.encryptPassword(password);
}
private encryptPassword(password: string) {
return crypto.pbkdf2Sync(password, this.salt, 10000, 512, 'sha512').toString('hex');
};
public checkPassword(password: string) {
return this.encryptPassword(password) === this.hashedPassword;
};
}
关于strongloop - 如何在环回4中加密密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54256665/