после успешной регистрации я не могу войти в экспресс - PullRequest
0 голосов
/ 15 октября 2018

после успешной регистрации с паспортом в экспресс, когда я пытаюсь войти.это не удалось, и я не знаю, какой код вызывает ошибку.пожалуйста помоги.вот мой код.

router.post('/register',function(req,res){
//fetch user info
var firstName=req.body.firstName,
    lastName = req.body.lastName,
    mobile= req.body.mobile,
    email = req.body.email,
    password = req.body.password,
    newsConsent = req.body.newsConsent;

var userInfo = {firstName: firstName, lastName: lastName, mobile: mobile, email:email, newsConsent: newsConsent };

//register and create user
User.register(new User(userInfo), password, function(error, userCreated)
 {
     if (error)
     {
        console.log(error);    
        //  req.flash("error", error.message);
         return res.render("auth/register");
     }
     else
     {
         req.login(userCreated, function(err) {
          if (err) {
            console.log(err);
            return next(err);
          }
          console.log(userCreated);
          return res.redirect('/');
        });
     }
 });

});

// логин маршрута

router.post("/login", passport.authenticate("local", 
{
    successRedirect: "/",
    failureRedirect: "/register"
}), function(req, res){
    console.log(req.body);

});

также, пожалуйста, скажите мне, какузнать об ошибке в паспорте

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

ки.Я нашел виновника.это не паспорт, это схема мангуста.Я должен добавить {index: true} в имени пользователя.

`username    : {type:String, unique: true, index: true},`.

после этого все работает нормально.

0 голосов
/ 15 октября 2018

Вам необходимо объявить свою стратегию, сериализовать и десериализовать.Вот мой кодВы можете редактировать его, как вам нужно.К вашему сведению, я использовал «nip_nim» вместо «username», поэтому я установил «usernameField» как nip_nim.Здесь я также использую пакет 'flash' для сохранения своих уведомлений.

passport.use(new LocalStrategy({
    usernameField: 'nip_nim',
    passReqToCallback: true
}, function (req, nip_nim, password, done) {
    var params = {
        nip_nim: nip_nim
    }
    var user = new User_Model(params);
    user.getDataUserByNIPorNIM()
        .then(function (result) {
            if (!helper.isExist(nip_nim) || !helper.isExist(password)) {
                return done(null, false, req.flash('message_err', 'NIM/NIM dan password tidak boleh kosong.'));
            }
            if (!result) {
                return done(null, false, req.flash('message_err', 'NIP/NIM yang anda masukkan salah.'));
            }
            if (!bcrypt.compareSync(password, result.password)) {
                return done(null, false, req.flash('message_err', 'Password yang anda masukkan salah.'));
            }
            return done(null, result);
        })
}));

//serialize and deserialize passport
passport.deserializeUser(function (nip_nim, done) {
    var params = {
        nip_nim: nip_nim
    }
    var user = new User_Model(params);
    user.getDataUserByNIPorNIM()
        .then(function (result) {
            done(null, result);
        })
});

passport.serializeUser(function (req, user, done) {
    done(null, user.nip_nim, req.flash('message_success', 'Welcome, ' + user.nama_unit_org + "."));
});
...