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