Bir kullanıcı kimlik doğrulamasını/kayıt formunu gönderdikten sonra doğrulamak için passport-local-mongoose kullanmaya çalışıyorum. Neden her zaman "yetkisiz" aldığımı anlayamıyorum & veri tabanı üzerinde hiçbir veri gönderilmiyor ("passport.authenticate" ("local") app.post ("/ register") dan kaldırılırsa çalışır)
?Passport-local-mongoose: Kaydolduktan sonra kullanıcının kimliğini doğrula
herhangi bir fikir
app.js:
// ====== Dependencies
var express = require('express');
bodyParser = require('body-parser');
validator = require('express-validator');
cookieParser = require('cookie-parser');
expressSession = require('express-session');
passport = require('passport');
LocalStrategy = require('passport-local').Strategy;
auth = require('./controllers/auth');
registration = require('./controllers/register');
User = require('./models/user');
// ====== Options
var app = express()
.use(bodyParser.urlencoded({ extended: false }))
.use(bodyParser.json())
.use(validator())
.set('view engine','ejs')
.use(express.static("views"))
.use(cookieParser())
.use(expressSession({
secret : 'soooosecret',
resave : true,
saveUninitialized : false
}))
.use(passport.initialize())
.use(passport.session());
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
app.post('/register', passport.authenticate('local'), registration.reg);
app.listen(8080);
console.log('Server running at 8080');
Register.js:
var User = require('../models/user');
var reg = function (req, res) {
/* some form validation... */
var errors = req.validationErrors();
if (errors) {
res.render("register" , { errors : errors });
}
else {
var newUser = new User({
username : username,
password : password,
email : email,
tel : tel,
country : country
});
User.createUser(newUser);
}
}
module.exports = { reg : reg }
user.js:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mvpem');
var passportLocalMongoose = require('passport-local-mongoose');
var db = mongoose.connection;
var Schema = mongoose.Schema;
var UserSchema = new Schema({
username : String,
password : String,
email : String,
tel : Number,
country : String
});
UserSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model('User', UserSchema);
module.exports.createUser = function(newUser) {
newUser.save();
}
Merhaba ben mailid, adres ve kullanıcının diğer birkaç detayını saklamak istiyorum Başka bir bölümde bahsettiğiniz yönteminizi bir nesnedeki bir nesnede kullanmak ve User.register'da kullanmak işe yarayacak mı? Ve yeni Kullanıcı – Kannan
@kannan yaratmaktan başka bir yolu var. Sorunuzu anladığımdan emin değilim. Kod snippet'inde 4 adet veri saklanır: kullanıcı adı, e-posta, tel ve ülke. İstediğiniz herhangi bir bilgiyi saklayabilirsiniz, bunu "var User = require ('../ models/user'); register.js 'de bulunan kullanıcı modelinde tanımlamanız gerekir. Kullanıcıyı önceki 4 adet veri gibi oluşturuyor. Umarım bu yardımcı oldu. –
Şu anda aynı şeyi yapıyorum ve kodum örneğinize oldukça benziyor. Ancak başarılı bir kayıttan sonra MongoDB'de sadece kullanıcı adı ve hash kaydedildi. Bu ek verileri kullanıcı modelinden DB'ye nasıl kaydedebilirim ve bu verilere nasıl erişebilirim? –