2017-12-28 7 views
0

bin wirklich neu in der Stapelentwicklung von Mern. Ich habe dieses Problem bei der Verwendung von bcrypt, ich kann den Code einfach nicht zum Funktionieren bringen. Hier ist der Code. Freundlich helfen. Ich versuche, meine Passwörter mit bcryptPasswortverschlüsselung in Nodejs mit bcrypt

const mongoose = require('mongoose'); 
const Schema = mongoose.Schema; 
const bcrypt = require('bcrypt'); 
var SALT_WORK_FACTOR = 10; 

const userSchema = new Schema({ 
    name: String, 
    email: String, 
    phoneNumber: Number, 
    username: String, 
    password: String, 
    googleId: String, 
    credits: {type: Number, default: 0} 
}); 

// this creates an instance of an object to be sent to the database 
mongoose.model('users', userSchema); 

userSchema.pre('save', function(next){ 
    var user = this; 
    if (!user.isModified('password')) return next(); 

    bcrypt.genSalt(SALT_WORK_FACTOR, function(err, salt){ 
     if(err) return next(err); 

     bcrypt.hash(user.password, salt, function(err, hash){ 
      if(err) return next(err); 

      user.password = hash; 
      next(); 
     }); 
    }); 
}); 

das Paket json zu verschlüsseln, ist unter

{ 
    "name": "server", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    "engines": { 
    "node": "8.8.1", 
    "npm": "5.0.3" 
    }, 
    "scripts": { 
    "start": "node index.js", 
    "server": "nodemon index.js", 
    "client": "npm run start --prefix client", 
    "dev": "concurrently \"npm run server\" \"npm run client\"", 
    "heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client" 
    }, 
    "author": "David Mbwana", 
    "license": "ISC", 
    "dependencies": { 
    "axios": "^0.17.1", 
    "bcrypt": "^1.0.3", 
    "bcryptjs": "^2.4.3", 
    "body-parser": "^1.18.2", 
    "concurrently": "^3.5.1", 
    "connect-flash": "^0.1.1", 
    "cookie-session": "^2.0.0-beta.3", 
    "express": "^4.16.2", 
    "express-validator": "^4.3.0", 
    "mongoose": "^4.13.6", 
    "nodemon": "^1.12.5", 
    "passport": "^0.4.0", 
    "passport-google-oauth20": "^1.0.0", 
    "passport-http": "^0.3.0", 
    "passport-local": "^1.0.0", 
    "path": "^0.12.7", 
    "redux-thunk": "^2.2.0", 
    "stripe": "^5.4.0" 
    } 
} 

Das Passwort ist immer noch in der Datenbank ohne Verschlüsselung gespeichert zu werden.

+0

Sie alle Debugging getan ausgeführt werden? Was ist der Wert von "Hash"? Wo fügst du dich eigentlich in die Datenbank ein? –

+0

Überprüfen Sie, ob das Steuerelement bei dieser Anweisung zurückgegeben wird. 'if (! user.isModified ('password')) return next(); ' – MjZac

+0

@LukePark Ich füge das in die Datenbank in einer anderen Datei ein. Dieser Teil funktioniert gut. Der komische Teil ist, dass ich keine Fehler bekomme –

Antwort

0

ich das Problem gelöst, if(!user.isModified('password')) return next(); der Rest des Codes daher zu Falsey ausgewertet wurde nicht