为什么不对密码进行哈希处理?

Why the password is not hashed?

我正在使用 Argon2 来散列我的密码,这是我的代码:

import { ForbiddenException, Injectable } from '@nestjs/common';
import { PrismaService } from 'src/prisma/prisma.service';
import { AuthDto } from './dto';
import * as argon from 'argon2';

  async signup(authDto: AuthDto) {
    // generate the password
    const hash = await argon.hash(authDto.password);
    console.log(`The hashed password is ${authDto.password}`);

    // save the new user in the db
    try {
      const user = await this.prisma.user.create({
        data: {
          email: authDto.email,
          hash: authDto.password,
          firstname: '',
          lastname: '',
        },
      });
      //delete user.hash;
      // return the saved user
      return user;
    } catch (error) {
      // test if the error is commimg from prisma
      if (error instanceof PrismaClientKnownRequestError) {
        // test if the field is duplicated
        if (error.code === 'P2002') {
          throw new ForbiddenException('Credentials taken'); //NestJS exception
        }
      }
      throw error;
    }
  }

当我打印经过哈希处理的密码时,我发现它没有经过哈希处理。

PS : 我使用 NestJS 作为 nodeJS 后端框架,Manjaro Linux 作为 OS,Argon2 作为哈希库。

对密码进行哈希处理后,您仍在使用明文密码进行登录并将其存储到 prisma db 中。 变量 hash 包含哈希密码。

更改代码以使用 hash 而不是 authDto.password

const hash = await argon.hash(authDto.password);
console.log(`The hashed password is ${hash}`);