Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 请帮我获取散列密码_Javascript_Node.js_Express - Fatal编程技术网

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,我不知道这个编辑是否有用,但如果有用,请告诉我。我已经测试过了,它可以工作,但它可能不适合你。