паспорт js, почему сервер зависает при авторизации? - PullRequest
0 голосов
/ 03 февраля 2020

Я очень долго пытаюсь решить проблему, но понятия не имею, как. Два разных сервера прослушивают свой порт:

var app = require('../app');
var app_admin = require('../app_admin');

var debug = require('debug')('myapp:server');
var http = require('http');
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

var port_admin = normalizePort('8080');
app_admin.set('port', port_admin);

var server = http.createServer(app);
var server_admin = http.createServer(app_admin);

server.listen(port,'0.0.0.0');
server.on('error', onError);
server.on('listening', onListening);

server_admin.listen(port_admin,'0.0.0.0');
server_admin.on('error', onError);
server_admin.on('listening', onListeningAdmin);

function onListening() {
  var addr = server.address();
  console.log('ADR',addr);

  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}

function onListeningAdmin() {
  var addr = server_admin.address();
  console.log('ADR',addr);

  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);

Все примитивно построено, не уверен, что это правильно. Буду рад, если посоветуете как-нибудь получше.

app_admin. js:

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var AdminController = require('./controllers/AdminController');
var fs = require('fs');

var app = express();

app.set('trust proxy', true);

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use(AdminController);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  res.status(404).send({error:'method not found'});
});

// error handler
app.use(function(err, req, res, next) {
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500).render('error');
});

module.exports = app;

Далее паспорт :

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

var userDB = {
    id: 55,
    email: 'test@gmail.com',
    password: '12345678',
}

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

passport.deserializeUser(function(id,done){
    var user = (userDB.id === id) ? userDB : false;
    done(null, user);
})

passport.use('login',new localStrategy(
    {
        usernameField:'email'
    }, function (email, password, done) {
        console.log('EMAIL',email);
        console.log('PASS',password);

        return done(null, userDB)
    }
  ));

И аутентификация :

router.post('/login', passport.authenticate('login',{session: false}),
    function(req, res) {
        console.log('test');
        res.end('LOGIN');
});

Итак, auth обрабатывает 3 из 10 запросов, остальное время - бесконечная загрузка. Отображать в консоли только «тест». Я прошу вас не бросать камни в меня. У меня мало опыта. Научи меня, как это сделать? Или, по крайней мере, дать подсказку.

...