为了账号安全,请及时绑定邮箱和手机立即绑定

如何在单独的辅助函数中定义 userData?

如何在单独的辅助函数中定义 userData?

温温酱 2023-05-25 18:07:09
我是初学者。我想将加密函数 (encryption.js) 与 authentication.js 文件分开,但出现错误“ReferenceError: userData is not defined”。如何在单独的辅助函数中定义 userData?authentiocation.js:const express = require('express');const router = express.Router();const User = require('../models/user');const jwt = require('jsonwebtoken');const encryption = require("../helpers/encryption").encryption;router.post('/register', (req, res) => { // rejestracja  const userData = req.body;  User.findOne({ email: userData.email }, (error, user) => {   (...)      else {                encryption(); // <-----------------        const user = new User({          firstname: userData.firstname,          email: userData.email,          surname: userData.surname,          password: encrypted        });        user.save((error, registeredUser) => {          if (error) {            res.status(401).send('Błąd rejestracji!')          } else {            const firstname = user.firstname;            surname = user.surname;            email = user.email;            payload = { subject: registeredUser._id };            token = jwt.sign(payload, 'secretKey');            res.status(200).send({ token, firstname, surname, email });          }加密.js:const express = require('express');function encryption() {    const crypto = require('crypto');    const algorithm = 'aes-192-cbc';    // Key length is dependent on the algorithm. In this case for aes192, it is    // 24 bytes (192 bits).    // Use async `crypto.scrypt()` instead.    const key = crypto.scryptSync(userData.password, 'salt', 24);    // Use `crypto.randomBytes()` to generate a random iv instead of the static iv    // shown here.    const iv = Buffer.alloc(16, 0); // Initialization vector.    const cipher = crypto.createCipheriv(algorithm, key, iv);    let encrypted = '';    cipher.on('readable', () => {        let chunk;        while (null !== (chunk = cipher.read())) {            encrypted += chunk.toString('hex');        }    });
查看完整描述

1 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

您可以将其作为参数传递给加密函数(在encryption.js文件中):


function encryption(userData) {

    ...

    // at the end:

    return encrypted;

}

然后像这样调用它authentiocation.js(你是说这里的身份验证吗?):


const encrypted = encryption(userData);

查看完整回答
反对 回复 2023-05-25
  • 1 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信