R
R
Roman2020-02-03 13:35:17
Node.js
Roman, 2020-02-03 13:35:17

Why does authorization hang when I use passport?

Hello! I've been trying for a long time to solve the problem, but so far I can't even see the light at the end of the corridor.
The documentation says that it can hang if you do not call the next () function. But I can't get through to her.
I run two servers on the node, each listens to its own port:

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);

Very messy and duplicated. Haven't found a better implementation than this. Not sure if listening on two ports this way is correct, but I don't have much experience. If you know how better, direct me to the right path.
Next 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;

The passport settings themselves :
var passport = require('passport');
var localStrategy = require('passport-local').Strategy;

var userDB = {
    id: 55,
    email: '[email protected]',
    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)
    }
  ));


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

As a result, after sending the data from the form, there are several authorizations (about 3x). Then after the next sending, it hangs forever. 'test' is output to the console, hangs on res.end('LOGIN'). No errors are output.
I will be glad for any hint.

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question