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?

¿Fue útil?

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
scroll top