0
ユーザの作成時にユーザパスワードをハッシュしたいと思います。ユーザーが作成されますが、パスワードは、なぜ私は理解していないハッシュされていません。..ここに私のコードです:nodejs bcryptがdbでパスワードをハッシングしない
ここvar mongoose = require('mongoose');
var jwt = require('jsonwebtoken');
var User = mongoose.model('User');
var config = require('../../config/config');
var bcrypt = require('bcrypt');
var SALT_WORK_FACTOR = 10;
exports.create_a_user = function(req, res) {
var user = new User(req.body);
user.schema.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();
});
});
});
user.save(function(err, user) {
if (err){
res.send(err);
}
res.json(user);
});
};
私のユーザモデル:
module.exports = mongoose.model('User', new Schema({
lastname: {
type: String,
validate: {
validator: function(v) {
return /^([a-zA-ZàáâäæçéèêëîïôœùûüÿÀÂÄÆÇÉÈÊËÎÏÔŒÙÛÜŸ \-\']+)$/.test(v);
},
message: 'Le champ {PATH} ne doit pas contenir de caractères spéciaux ou de chiffres !'
},
required: [true, "Le champ nom de famille est requis"]
},
firstname: {
type: String,
validate: {
validator: function(v) {
return /^([a-zA-ZàáâäæçéèêëîïôœùûüÿÀÂÄÆÇÉÈÊËÎÏÔŒÙÛÜŸ \-\']+)$/.test(v);
},
message: 'Le champ {PATH} ne doit pas contenir de caractères spéciaux ou de chiffres !'
},
required: [true, "Le champ prénom est requis"]
},
mail: {
type: String,
validate: {
validator: function(v) {
return /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/.test(v);
},
message: '{VALUE} n\'est pas une adresse mail valide!'
},
required: [true, "L'email est requis"]
},
password: {
type: String,
required: [true, "Le mot de passe est requis"]
},
phone: {
type: String,
validate: {
validator: function(v) {
return /^0[0-9]([-. ]?\d{2}){4}[-. ]?$/.test(v);
},
message: '{VALUE} n\'est pas un numéro de téléphone valide!'
},
required: [true, 'Le numéro de téléphone est requis']
},
}));
そして、私形式:
<form method="post" action="/api/v1/user/register">
<input type="text" name="lastname" placeholder="lastname"><br>
<input type="text" name="firstname" placeholder="firstname"><br>
<input type="text" name="adress" placeholder="adress"><br>
<input type="text" name="mail" placeholder="mail"><br>
<input type="password" name="password" placeholder="password"><br>
<input type="text" name="phone" placeholder="phone"><br>
<input type="date" name="birthdate" placeholder="birthdate"><br>
<input type="submit" value="Connection">
私はさまざまなサイトを使いましたが、方法は常に同じです。また、前に.schemaを付けずに ".pre()"関数を認識しないと、create userは動作しますが、ハッシュパスワードは使用されません。誰にもアイデアはありますか?
Thxを、それが言うこと:** VARユーザーは=必要(」./パス:ユーザーは、このようなあなたのモデルをインポートしてみ –
定義されていません。/to/model/User ')** –