La restricción de los campos que se va a establecer en Sails.js Modelo
Pregunta
Así que tengo un modelo con algunos campos como:
// ...
slug: {
type: 'string',
required: true,
alphanumeric: true,
minLength: 3,
maxLength: 16
},
loggedinAt: 'date',
// ...
Estoy usando las Velas modelo de la estructura por lo que automáticamente mapas de todo.Sin embargo, a veces me han campos como loggedinAt
que son estrictamente interno y no quiero que ellos para ser capaz de ser configurado por el usuario.
Tal y como está si hago un post de solicitudes con la loggedinAt
campo que se establezca.¿Cómo puedo restringir el uso de este?
Solución
Puede usar una política para restringir este comportamiento.En API / Políticas / RestrictUserCreate.js :
module.exports = function (req, res, next) {
// Check for the "loggedInAt" field in the request
if (req.param('loggedInAt')) {
return res.badRequest("Nuh uh, you can't set that!");
}
return next();
}
O, para simplemente ignorar ciertos campos (solo Sails v0.10.x), use la lista negra :
module.exports = function (req, res, next) {
// Make sure blacklist object exists, and use existing one if possible,
// since this policy could be chained
req.options.values = req.options.values || {};
req.options.values.blacklist = req.options.values.blacklist || [];
// Add restricted fields to the blacklist
req.options.values.blacklist.push('loggedinAt');
return next();
}
luego en config / Policies.js :
// Assuming your controller is "UserController"
UserController: {
create: "restrictUserCreate"
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow