¿Por qué contraseña y sal automáticamente en la pila media? -- de.js campo con express campo con mongoose campo con mean-stack campo con meanjs camp Relacionados El problema

Why Password and Salt automatically in MEAN STACK?


2
vote

problema

Español

Aquí estoy tratando de verificar el número de teléfono móvil en el módulo de usuario. He creado un token y yo envié al usuario, pero cuando el usuario está tratando de verificar que use esa "contraseña" de token en particular y la 'sal' se cambió automáticamente. ¿Cómo evitar esto? Alguien me ayudó .. Aquí quiero actualizar solo

  num_b3  

Por encima de las tres variables cambiadas, pero no sé por qué la contraseña y la sal ha cambiado?

He dado mis rutas a continuación:

  num_b4  

controlador:

  num_b5  

Modelo:

  num_b6  
Original en ingles

Here I am trying to verify mobile number in user module. I have created token and I sent to user but whenever user is trying to verify using that particular token 'Password' and 'salt' automatically got changed. How to avoid this? Some one help me out .. here I want to update only

user.Mobileverification = 'verfied'; user.Mobileverificationcode = undefined; user.mobileVerificationExpires = undefined; 

Above three variables got changed but I don't know why password and salt has changed?

I have given my routes below:

app.route('/auth/mobilereset/:token').get(users.mobileresetResetToken); app.route('/auth/mobilereset/:token').post(users.mobilereset); 

controller:

exports.mobileresetResetToken = function(req, res) {     User.findOne({         Mobileverificationcode :req.params.token,         mobileVerificationExpires: {             $gt: Date.now()          }         // resetPasswordToken: req.params.token,         // resetPasswordExpires: {             // $gt: Date.now()         // }     }, function(err, user) {         if (!user) {             res.send({                 message: 'Invalid token'             });           } else {              console.log('working fine');         }     }); };    exports.mobilereset = function(req, res, next) {       async.waterfall([          function(done) {             User.findOne({                 Mobileverificationcode: req.params.token,                 mobileVerificationExpires: {                     $gt: Date.now()                 }             }, function(err, user) {                 if (!err && user) {                          user.Mobileverification = 'verfied';                         user.Mobileverificationcode = undefined;                         user.mobileVerificationExpires = undefined;                          user.save(function(err) {                             if (err) {                                 return res.status(400).send({                                     message: errorHandler.getErrorMessage(err)                                 });                             } else {                                 req.login(user, function(err) {                                     if (err) {                                         res.status(400).send(err);                                     } else {                                         // Return authenticated user                                          res.json(user);                                          done(err, user);                                     }                                 });                             }                         });                  } else {                     return res.status(400).send({                         message: 'reset token is invalid or has expired.'                     });                 }             });         },      ], function(err) {         if (err) return next(err);     }); }; 

model:

var UserSchema = new Schema({      username: {         type: String,         unique: 'testing error message',         required: 'Please fill in a username',         trim: true     },     password: {         type: String,         default: '',         // validate: [validateLocalStrategyPassword, 'Password should be longer']     },     email: {         type: String,         trim: true,         default: '',         // validate: [validateLocalStrategyProperty, 'Please fill in your email'],         // match: [/.+\@.+\..+/, 'Please fill a valid email address']     },     Mobilenumber: {         type: String,         default: ''     },       roles: {         type: [{             type: String,             enum: ['user', 'admin']         }],         default: ['user']     },     salt: {         type: String     },     provider: {         type: String,         required: 'Provider is required'     },     providerData: {},     additionalProvidersData: {},      updated: {         type: Date     },     created: {         type: Date,         default: Date.now     },     /* For reset password */     Mobileverificationcode: {         type: String,     },     mobileVerificationExpires: {         type: Date     },     Mobileverification: {         type: String,         trim: true,         default: 'Not Verified',     },     resetPasswordToken: {         type: String     },     resetPasswordExpires: {         type: Date     } }); 
              

Lista de respuestas

0
 
vote

No sé si eliminó esto o no, pero en el modelo de usuario significa, debe tener cuidado con el siguiente bloque de código:

  std::vector<std::vector<bool>> 0  

que se llamará justo antes de guardar los datos del usuario. Probablemente es, por lo que la contraseña y la sal siguen cambiando ... usted está llamando a Usuario.Save en Mobile.Reset () y ese bloque de código anterior todavía está presente en algún lugar.

Actualizar: Una posible forma de hacerlo es:

  std::vector<std::vector<bool>> 111  

Sin embargo, es posible que necesite algunos ajustes, como mejorar este gancho pre-guardado de acuerdo con sus necesidades y pruebas que cambian la contraseña y la verificación móvil para ver si nada está roto.

 

I don't know if you removed this or not but in MEAN.js user model, you have to be careful with the following code block:

/**  * Hook a pre save method to hash the password  */ UserSchema.pre('save', function (next) {    if (this.password && this.isModified('password')) {      this.salt = crypto.randomBytes(16).toString('base64');     this.password = this.hashPassword(this.password);    }    next(); }); 

Which will be called right before you save the user data. That's probably why password and salt keep changing... You are calling user.save in mobile.reset() and that code block above is still present somewhere.

Update: A possible way of doing it is:

/**  * Hook a pre save method to hash the password  */ UserSchema.pre('save', function (next) {    if(!this.isModified('Mobileverification') && !this.isModified('Mobileverificationcode') && !this.isModified('mobileVerificationExpires')) {        if (this.password && this.isModified('password')) {          this.salt = crypto.randomBytes(16).toString('base64');          this.password = this.hashPassword(this.password);        }     }    next(); }); 

However it might need a few adjustments, such as improving this pre-save hook according to your needs and testing password changing and mobile verification to see if nothing is broken.

 
 
 
 

Relacionados problema

2  Significa agregar un objeto que utilice dos modelos existentes  ( Mean add an object that utilize two existing models ) 
Hola, estoy experimentando con los aspectos meismos de desarrollo. He hecho una aplicación que consiste en CRUD para "Cuentas", "ingresos" y "gastos". Cada ...

1  Cómo pasar un valor de la aplicación de nodo / express a un controlador AngularJS  ( How to pass a value from node express app to an angularjs controller ) 
Estoy desarrollando una aplicación basada en la placa de caldera media. En uno de mis controladores angulares, necesito "saber" si la aplicación se está eje...

1  Cómo usar localStorageService en $ TranslateProvider Module Config  ( How to using localstorageservice in translateprovider module config ) 
Utilicé el almacenamiento angular-traducido y angular y local con los micros, todo está añade a las dependencias del módulo, en la aplicación config.js: ...

-1  Documento Guardar la función no funciona en mangosta  ( Document save function not working in mongoose ) 
Estoy actualizando el documento "Order.atttt_status" de "Abrir" a "CERRADO" utilizando el siguiente código AttemptSchema.pre('save', function (next) { va...

1  ¿Cómo filtrar el nombre de usuario basado en roles específico en desplegarse con AngularJS?  ( How to filter specific role based username in drop down using angularjs ) 
¿Cómo filtrar el nombre de usuario basado en la función específica en desplegarse con JS angular? Hola. Todo lo que quiero filtrar KP Nombre de usuario de...

5  Agregar una imagen a la muestra media.js con carga angular-Subir  ( Adding a picture to the mean js sample with angular file upload ) 
Estoy usando significa.js ( https://github.com/meandajs/mean ) y Carga de archivos angular ( https://github.com/danialfarid/angular-file-upload). La muestra...

0  Cómo exponer una variable de un método dentro de un controler.js a otro controler.js con JavaScript Express Nodo  ( How to expose a variable from one method within a controller js to another contr ) 
Tengo una aplicación Mongo, Express, Angular, Nodos. Estoy tratando de pasar una variable que es una respuesta de un método en 1 archivo a un método diferente...

0  ¿Dónde pongo la URL de base de datos / IP  ( Where do i put the database url ip ) 
No es muy seguro dónde ponerlo. Intentó un montón de cosas y ninguno funcionó buscado en Google. module.exports = { db: { uri: process.env.MONGOHQ_UR...

0  Significa.js - Redirigir al usuario después de Signin: funciona localmente pero no cuando se implementa  ( Mean js redirect user after signin works locally but not when deployed ) 
Estoy tratando de redirigir a los usuarios después de la inscripción, pero por cualquier motivo que funciona localmente y no cuando se implementa Heres La f...

0  ¿Cómo obtener valores seleccionando los primeros valores desplegables relacionados con los segundos valores desplegables usando JS angular?  ( How to get values selecting of first drop down values related to second drop dow ) 
¿Cómo obtener valores relacionados con otro usando desplegable en JS angular? Hola, todo lo que he creado dos drop down fields en myplunker Y con en el ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos