4

I have the passport HTTP authentication:

var express = require('express.io');
var passport = require('passport');
var expressSession = require('express-session');

var app = express().http().io();
app.use(express.cookieParser());
app.use(expressSession({ secret: 'someSecretWord' }));
app.use(passport.initialize());
app.use(passport.session());
router.post("/login", passport.authenticate("local", {
  successRedirect: "/index"
}));

//It works fine like this:
router.get("/index", authMiddleware.isAuthenticatedUser, function (req, res) {
    res.render("index");
});

//But doesn't affect WebSocket, so this won't work:
app.io.route('getMessage', authMiddleware.isAuthenticatedUser, function (req) {
  controller.getMessage(req).then(function (message) {
    req.io.respond(message);
  });
});

What is the best way to share the authentication between HTTP and WebSocket requests?

Alexander Korzhykov
  • 1,063
  • 10
  • 14
  • The solution is probably similar to this: https://stackoverflow.com/questions/47526793/how-to-use-subscriptions-transport-ws-with-passport-and-express-session/53199673#53199673 – Max Gordon Nov 08 '18 at 00:02

0 Answers0