我是初学者。我想将加密函数 (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);
添加回答
举报
0/150
提交
取消