J'essaie de créer un projet à l'aide de strongloop, dans lequel je crée un service Web pour la connexion utilisateur, mon code fonctionne bien et obtient la sortie souhaitée, sauf qu'il ne masque pas le mot de passe

J'obtiens un résultat

{
    "result": [{
        "_id": 2,
        "address": "abc",
        "created_by": 1,
        "created_date": "2016-03-04T00:00:00.000Z",
        "firstname": "Anup",
        "isdeleted": 0,
        "lastname": "Deshpande",
        "mobile_number": "9700128907",
        "oldpassword": "string",
        "profile_picturename": "anup.jpeg",
        "role_id": 1,
        "user_email_id": "anupd@ideaentity.com",
        "user_password": "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8",
        "user_status": 1
    }]
}

Où je veux masquer ou supprimer "user_password": "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8", champ.

Quelqu'un peut-il me dire comment puis-je faire cela dans la méthode à distance de strongloop

Mon code de méthode à distance est comme suit

db.collection('users').find({
                user_email_id : par,
                user_password : sha256(par2)
            }).toArray(function(err, result) {

                // var passwordHash = hashPassword(user_password);
                // console.log(passwordHash);
                if (err) {
                    throw err;
                }
                if (result.length > 0) {
                    self.callback(null, result);
                    // db.disconnect();
                } else {
                    self.callback(null, response);
                    // db.disconnect();
                }
            });

Ici "le résultat donnera tous les détails" Je veux cacher le mot de passe du résultat

Merci d'avance

4
Anup Deshpande 7 mars 2016 à 12:10

3 réponses

Meilleure réponse

Essaye ça.

{ fields: {propertyName: <true|false>, propertyName: <true|false>, ... } }

propertyName est le nom de la propriété (champ) à inclure ou à exclure. signifie vrai ou faux littéral booléen. Utilisez true pour inclure la propriété ou false pour l'exclure des résultats. Vous pouvez également utiliser 1 pour vrai et 0 pour faux. Par défaut, les requêtes renvoient toutes les propriétés du modèle dans les résultats. Cependant, si vous spécifiez au moins un filtre de champs avec une valeur true, la requête inclura par défaut uniquement ceux que vous incluez spécifiquement avec les filtres.

Référer ce lien https://docs.strongloop.com/display/public/LB/Fields+filter

Example:
var query = { fields: {password: false} }
Model.find(query, function()
{
});

Sinon, vous pouvez supprimer manuellement dans afterremotemethod (), dans ctx.result. renvoyez ce lien https://docs.strongloop.com/display/public/LB/ Télécommande + crochets

0
Riaz as kather 8 mars 2016 à 12:21

Pour moi

// {user_password: 0} - pour masquer le mot de passe

db.collection('users').find({
                user_email_id : par,
                user_password : sha256(par2)
            },{user_password:0}).toArray(function(err, result) {

Cela a bien fonctionné

Pour plus de détails sur les juments, vous pouvez consulter ici

0
Anup Deshpande 10 mars 2016 à 09:31

Ajoutez un champ caché dans votre model.json qui est "caché": ["mot de passe", "verificationToken"],

Example:
{
  "name": "User",
  "properties": {
    "realm": {
      "type": "string"
    },
    "username": {
      "type": "string"
    },
    "password": {
      "type": "string",
      "required": true
    },
    "credentials": {
      "type": "object",
      "deprecated": true
    },
    "challenges": {
      "type": "object",
      "deprecated": true
    },
    "email": {
      "type": "string",
      "required": true
    },
    "emailVerified": "boolean",
    "verificationToken": "string",
    "status": "string",
    "created": "date",
    "lastUpdated": "date"
  },
  "options": {
    "caseSensitiveEmail": true
  },
  "hidden": ["password", "verificationToken"],
  "acls": [

  ],
  "relations": {

  }
}
0
Riaz as kather 8 mars 2016 à 06:29