我是初學者。我想將加密函數 (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'); } });
如何在單獨的輔助函數中定義 userData?
溫溫醬
2023-05-25 18:07:09