Форма аутентификации с паспортом долгое время загрузки и без сообщения - PullRequest
0 голосов
/ 10 июня 2018

Я использую паспорт с nodejs, express и EJS.Я создал форму аутентификации, но когда я хочу отправить запрос, сервер никогда не отвечает, а затем сбрасывает соединение без каких-либо сообщений об ошибках.

Здесь мой server.js

    var express = require("express");
    var MongoClient = require("mongodb");
    var bodyParser = require('body-parser')
    var cons = require('consolidate');
    var octicons = require("octicons");
    var app = express();
    var url = process.env.URL || "mongodb://localhost:27017/";
    var dbName = process.env.DBNAME || "blog";
    var port = process.env.PORT || 8000;
    var routes = require("./routes");
    var session = require('express-session')
    var compte = require('./models/compte');
    var mongoose = require('mongoose');
    var passport = require('passport');
    var flash    = require('connect-flash');

    var morgan       = require('morgan');
    var cookieParser = require('cookie-parser');
    var bodyParser   = require('body-parser');
    var session      = require('express-session');
    require('./config/passport')(passport);

    app.engine('html', cons.pug);
    app.set('view engine', 'html');
    app.set('views',  __dirname +  '/views')
    app.use(express.static(__dirname + '/assets'));

    app.use(morgan('dev'));
    app.use(cookieParser());
    app.use(bodyParser());

    app.use(session({ secret: 'simonahalepnumberone' })); 
    app.use(passport.initialize());
    app.use(passport.session()); 
    app.use(flash()); 


    MongoClient.connect(url, function(err, client) {
      if(err) throw err;

      routes(app, passport);

      app.client = client;
      app.db = client.db(dbName);


      app.listen(port, function() {
        console.log("now listening on http://localhost:" + port)
      });
    });

    module.exports = app;

Мой индекс.js (который содержит маршруты)

var posts = require("./posts");

module.exports = function(app, passport) {

  function convertDate(dateString) {
    var date = new Date(dateString);

    return date.getDate()+"/"+date.getMonth()+"/"+date.getFullYear();
  }


  app.get("/", function(req, res) {    
    app.db.collection("articles").find({}).sort({date: 1}).toArray(function(err, result){
      if(err) throw err;
      result = result.reverse();
      for(i = 0; i < result.length; ++i){
        result[i].article = result[i].article.substr(0,75);
        result[i].date = convertDate(result[i].date);
      }
      res.render("pages/index.ejs", {"articles": result})
    });
  });



  app.get('/connexion', function (req, res, next) {
      res.render("pages/connexion.ejs", { message: req.flash('connexionMessage') }); 
  });

  app.post('/connexion', passport.authenticate('local-login', {
    successRedirect : '/', 
    failureRedirect : '/connexion', 
    failureFlash : true 
}));

  app.get('/deconnexion', function(req, res) {
    req.logout();
    res.redirect('/');
  });

  app.get('*', function(req, res){
    res.render("pages/erreur404.ejs");
  });

  // Register posts endpoint
  posts(app);


}

Мой passport.js

var LocalStrategy = require('passport-local').Strategy;

var User = require('../models/compte');

module.exports = function(passport) {



    passport.serializeUser(function(user, done) {
        done(null, user.id);
    });

    passport.deserializeUser(function(id, done) {
        User.findById(id, function(err, user) {
            done(err, user);
        });
    });


    passport.use('local-login', new LocalStrategy({
        usernameField : 'pseudo',
        passwordField : 'password',
        passReqToCallback : true 
    },
    function(req, pseudo, password, done) { 


        User.findOne({ 'local.pseudo' :  pseudo }, function(err, user) {
            if (err)
                return done(err);

            if (!user)
                return done(null, false, req.flash('connexionMessage', 'Erreur dans le pseudo.')); 

            if (!user.validPassword(password))
                return done(null, false, req.flash('connexionMessage', 'Erreur dans le mot de passe')); 

            return done(null, user);
        });

    }));

};

И моя модель для учетной записи пользователя

var mongoose = require('mongoose');
var bcrypt   = require('bcrypt-nodejs');

var compteSchema = mongoose.Schema({

    local            : {
        pseudo        : String,
        password     : String,
    }

});


compteSchema.methods.genererHash = function(password) {
    return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null);
};

compteSchema.methods.validPassword = function(password) {
    return bcrypt.compareSync(password, this.local.password);
};

module.exports = mongoose.model('utilisateur', compteSchema);

Я следовал этому руководствупоэтому я не понимаю, почему это не работает ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...