Задать вопрос
@RomanTrakhtenberg
Пока не волшебник, только учусь.

Почему зависает авторизация использую passport?

Всем привет! Давольно таки долго бьюсь над решением проблемы, но пока даже и не видно света в конце коридора.
В документации сказано, зависнуть может если не вызвать функцию next(). Но у меня до неё дело не доходит.
Запускаю на ноде два сервера, каждый слушает свой порт:
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;

Сами настройки passport:
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');
});

В результате после отправки данных из формы, проходят несколько авторизаций (около 3х). Потом после очередной отправки, зависает на всегда. В консоль выводиться 'test', зависает на res.end('LOGIN'). Ни каких ошибок не выводиться.
Буду рад любой подсказке.
  • Вопрос задан
  • 96 просмотров
Подписаться 1 Сложный Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы