У меня есть эта схема joi для проверки электронной почты и пароля, которые были отправлены через тело как json. Кроме того, теперь я хочу проверить IP-адрес. Я попробовал, как показано ниже, но получил следующее:
{
"isJoi": true,
"name": "ValidationError",
"details": [
{
"message": "\"ip\" is required",
"path": [
"ip"
],
"type": "any.required",
"context": {
"key": "ip",
"label": "ip"
}
}
],
"_object": {
"email": "[email protected]",
"password": "kyuser2923?"
}
}
Вот моя схема joi в routehelpers.js
const Joi = require('joi');
module.exports = {
validateSignup: (schema) => {
return (req, res, next) => {
const result = Joi.validate(req.body, schema);
if (result.error) {
return res.status(400).json(result.error);
}
if (!req.value) { req.value = {}; }
req.value['body']= result.value;
next();
}
},
schemas: {
signupSchema: Joi.object().keys({
email: Joi.string().email().required(),
password: Joi.string().required(),
ip: Joi.string().ip({
version: [
'ipv4',
'ipv6'
],
cidr: 'required'
}).required()
})
}
}
Когда я вставляю в свой контроллер:
const curIP = req.ip;
console.log('IP: '+curIP);
Я получаю ip в консоли:
Server running at http://127.0.0.1:4002/
IP: 127.0.0.1
Но как я могу дополнительно проверить IP-адрес сервера, запрашивающего регистрацию?
Я полагаю, это потому, что он проверяет все в req.value.body. Но как мне изменить validateSignup: (schema), чтобы также проверить IP-адрес, запрашивающий регистрацию?