Javascript 请帮我获取散列密码
我正在尝试获取管理员的哈希密码 我试图对密码进行哈希运算,但未能将其插入到用户对象中Javascript 请帮我获取散列密码,javascript,node.js,express,Javascript,Node.js,Express,我正在尝试获取管理员的哈希密码 我试图对密码进行哈希运算,但未能将其插入到用户对象中 import encryptor from '../helpers/password'; let hashed_pswd = 'john123'; const hashPassword= async () => { const adminPwd = await encryptor.encryptPassword(hashed_pswd, 10); console.log(adminPwd
import encryptor from '../helpers/password';
let hashed_pswd = 'john123';
const hashPassword= async () => {
const adminPwd = await encryptor.encryptPassword(hashed_pswd, 10);
console.log(adminPwd);
}
hashPassword();
export default [
{
id: 1,
first_name: 'john',
last_name: 'doe',
email: 'john@gmail.com',
password: adminPwd,
address: 'kigali',
is_admin: true
}
]
我可以在控制台中记录哈希密码,但当我尝试发送POST请求时,我发现adminPwd没有定义
提前谢谢。为了解决此问题,您需要使用
让来声明adminPwd,而不是在全局范围内或导出默认部分可以访问它的范围内常量
请参阅修改后的代码段:
import encryptor from '../helpers/password';
let hashed_pswd = 'john123';
let adminPwd;
const hashPassword = async () => {
adminPwd = await encryptor.encryptPassword(hashed_pswd, 10);
console.log(adminPwd);
return [
{
id: 1,
first_name: 'john',
last_name: 'doe',
email: 'john@gmail.com',
password: adminPwd,
address: 'kigali',
is_admin: true
}
]
}
export default hashPassword;
无论您在何处导入此函数,请在使用它之前调用导出函数
要使用此响应,您有两个选项:
在使用await关键字的异步函数中
如果不在异步函数中使用。那么使用承诺方法
为了解决这个问题,您需要使用let
来声明adminPwd,而不是const
在全局范围内或导出默认部分可以访问它的范围内
请参阅修改后的代码段:
import encryptor from '../helpers/password';
let hashed_pswd = 'john123';
let adminPwd;
const hashPassword = async () => {
adminPwd = await encryptor.encryptPassword(hashed_pswd, 10);
console.log(adminPwd);
return [
{
id: 1,
first_name: 'john',
last_name: 'doe',
email: 'john@gmail.com',
password: adminPwd,
address: 'kigali',
is_admin: true
}
]
}
export default hashPassword;
无论您在何处导入此函数,请在使用它之前调用导出函数
要使用此响应,您有两个选项:
在使用await关键字的异步函数中
如果不在异步函数中使用。那么使用承诺方法
由于您使用的是async/await
函数的hashPassword
,因此您最好将整个代码封装在一个函数中并删除该函数。您应该将hashed_pswd
变量重命名为更有意义的变量,因为在该阶段它没有进行哈希运算。我把它叫做密码
import encryptor from '../helpers/password';
export default async () => {
const password = 'john123';
const hashedPassword = await encryptor.encryptPassword(password, 10);
return [{
id: 1,
first_name: 'john',
last_name: 'doe',
email: 'john@gmail.com',
password: hashedPassword,
address: 'kigali',
is_admin: true
}];
};
要导入该模块,您必须使用async
包装代码,因为您在getUserData
中返回了该async
的承诺
import getUserData from './getUserData.mjs';
(async () => {
console.log(await getUserData());
})();
由于您使用的是async/await
函数的hashPassword
,因此您最好将整个代码封装在一个函数中并删除该函数。您应该将hashed_pswd
变量重命名为更有意义的变量,因为在该阶段它没有进行哈希运算。我把它叫做密码
import encryptor from '../helpers/password';
export default async () => {
const password = 'john123';
const hashedPassword = await encryptor.encryptPassword(password, 10);
return [{
id: 1,
first_name: 'john',
last_name: 'doe',
email: 'john@gmail.com',
password: hashedPassword,
address: 'kigali',
is_admin: true
}];
};
要导入该模块,您必须使用async
包装代码,因为您在getUserData
中返回了该async
的承诺
import getUserData from './getUserData.mjs';
(async () => {
console.log(await getUserData());
})();
我不是Javascript爱好者,但我想adminPwd
的作用域应该是hashPassword
函数。我希望您从该方法返回哈希密码。(我还要更改hashed_pswd
变量的名称,因为它不是散列的-这是纯文本。)嗨,John,即使我返回adminPwd,我也会得到相同的错误。当我注释掉对象中的密码:adminPwd时,我真的能够在控制台中返回一个哈希字符串。我认为另一个问题是hashPassword()是异步的,但您没有等待它。因此,即使在函数完成之前,它也会尝试填充值。在里面你还调用了一个名为encryptPassword的方法……你意识到散列和加密不是一回事??我不是Javascript人,但我猜adminPwd
的作用域是hashPassword
函数。我希望您从该方法返回哈希密码。(我还要更改hashed_pswd
变量的名称,因为它不是散列的-这是纯文本。)嗨,John,即使我返回adminPwd,我也会得到相同的错误。当我注释掉对象中的密码:adminPwd时,我真的能够在控制台中返回一个哈希字符串。我认为另一个问题是hashPassword()是异步的,但您没有等待它。因此,即使在函数完成之前,它也会尝试填充值。同样在里面你调用了一个叫做encryptPassword的方法…你意识到散列和加密不是一回事??我试过了,但在响应体中找不到散列密码。请参考修改后的解决方案。我试过了,但在响应体中找不到散列密码。请参考修改后的解决方案。问题是当我试图在一个函数中移动数组时,我得到了这样一个错误:``导出'或'导入'可能在顶层```。是的,我很害怕。让我来做吧。它可能还可以抢救。@Mo1,我不知道这个编辑是否有用,但如果有用,请告诉我。我已经对它进行了测试,但它可能不适合您。问题是,当我尝试在函数中移动数组时,会出现以下错误:“``导出'或'导入'可能处于顶层”`。是的,我很担心。让我来做吧。它可能还可以抢救。@Mo1,我不知道这个编辑是否有用,但如果有用,请告诉我。我已经测试过了,它可以工作,但它可能不适合你。