【问题标题】:How to encrypt password in loopback 4?如何在环回 4 中加密密码?
【发布时间】:2019-06-12 21:03:19
【问题描述】:
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 - 错误 TS2304:找不到 名称'PasswordHasher'。

27 @Inject('utilities.PasswordHasher') 私人密码哈希: 密码哈希,

src/controllers/member.controller.ts:27:65 - 错误 TS4063:参数 来自导出类的构造函数的“passwordHasher”已经或正在使用 私有名称“PasswordHasher”。

27 @Inject('utilities.PasswordHasher') 私人密码哈希: 密码哈希,

我可以使用哪个模块?

【问题讨论】:

    标签: strongloop loopback


    【解决方案1】:

    我是这样做的:

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

    【讨论】:

    • 能否请您解释一下如何将它放入控制器中? @angelwally
    • 当您创建用户实体时,当您设置密码时,它会自动计算派生的哈希密码。如果要检查用户密码,只需执行 myUser->checkPassword("testPassword")。
    猜你喜欢
    • 2019-07-11
    • 1970-01-01
    • 2012-02-03
    • 2014-05-08
    • 2014-05-16
    • 2014-08-19
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    相关资源
    最近更新 更多