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
3 réponses
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
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
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": {
}
}
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.