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

我是初学者。我想将加密函数 (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');

        }

    });

温温酱
浏览 141回答 1
1回答

倚天杖

您可以将其作为参数传递给加密函数(在encryption.js文件中):function encryption(userData) {    ...    // at the end:    return encrypted;}然后像这样调用它authentiocation.js(你是说这里的身份验证吗?):const encrypted = encryption(userData);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript