1
Kullanıcılarımın başvurusu için bir rota oluşturmaya çalışıyorum ama bir sorunla karşılaştım./mongoose object yöntemi bir işlev değil
var mongoose = require('mongoose');
var crypto = require('crypto');
var jwt = require('jsonwebtoken');
var UserSchema = new mongoose.Schema({
username: {type: String, lowercase: true, unique: true},
hash: String,
salt: String
});
UserSchema.methods.setPassword = function(password){
this.salt = crypto.randomBytes(16).toString('hex');
this.hash = crypto.pbkdf2Sync(password, this.salt, 1000, 64).toString('hex');
};
UserSchema.methods.validPassword = function(password) {
var hash = crypto.pbkdf2Sync(password, this.salt, 1000, 64).toString('hex');
return this.hash === hash;
};
UserSchema.methods.generateJWT = function() {
// set expiration to 60 days
var today = new Date();
var exp = new Date(today);
exp.setDate(today.getDate() + 60);
return jwt.sign({
_id: this._id,
username: this.username,
exp: parseInt(exp.getTime()/1000),
}, 'SECRET');
};
mongoose.model('User', UserSchema);
yolları/index.js
Users.jsmodeller: Burada
TypeError: user.setPassword is not a function at
benim kodudur: /register
rotayı çarptığında, aşağıdaki hatayı alıyorum var express = require('express');
var router = express.Router();
var passport = require('passport');
var mongoose = require('mongoose');
var User = mongoose.model('User');
router.post('/register', function(req, res, next){
if(!req.body.username || !req.body.password){
return res.status(400).json({message: 'Please fill out all fields'});
}
var user = new User();
user.username = req.body.username;
user.setPassword(req.body.password);
user.save(function (err){
if(err){ return next(err); }
return res.json({token: user.generateJWT()})
});
});
module.exports = router;
app.js
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
//MongoDB Setup
var mongoose = require('mongoose');
require('./models/Users');
mongoose.connect('mongodb://localhost/images');
var passport = require('passport');
require('./config/passport');
var routes = require('./routes/index');
var app = express();
app.use(passport.initialize());
.
.
.
module.exports = app;
Ben ORTALAMA yığını için oldukça yeni ve işler ters gidiyor neden birkaç saat için kod Temizleme sonra ben göremiyorum. Bunu yapmak için
Tuz ve karmayı nasıl sakladığınızı seviyorum. Bunu daha önce böyle görmemiştim. Gördüğüm çoğu kod sadece db'de sadece bir şifre saklıyor –
Bu şekilde daha güvenli, bir sızıntı olsa bile, düz metin yok. Onu thinkster.io'dan aldım. – Quantaliinuxite
thinkster.io link için teşekkürler çok kötü onlar bir rss feed yok onların beslemeleri –