为什么不对密码进行哈希处理?
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}`);
我正在使用 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}`);