Question

Donc, j'ai un modèle avec certains champs comme suit:

// ...
slug: {
  type: 'string',
  required: true,
  alphanumeric: true,
  minLength: 3,
  maxLength: 16
},
loggedinAt: 'date',
// ...

Je suis en utilisant les Voiles plan de la structure de sorte qu'il mappe automatiquement tout.Cependant, j'ai parfois des domaines comme l' loggedinAt qui sont strictement interne et je ne veux pas qu'elles puissent être défini par l'utilisateur.

Tel qu'il est, si je fais un post demandes avec l' loggedinAt champ, il va le mettre.Comment puis-je limiter cela?

Était-ce utile?

La solution

Vous pouvez utiliser une stratégie pour limiter ce problème.Dans api/policies/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();

}

ou, tout simplement de l'ignorer certains champs (Voiles v0.10.x uniquement), utilisez l' la liste noire:

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();

}

Puis dans config/policies.js:

// Assuming your controller is "UserController"
UserController: {
    create: "restrictUserCreate"
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top