express-socket.io-session icon indicating copy to clipboard operation
express-socket.io-session copied to clipboard

Trying to use session data in socket resulting to "undefined"

Open harry-lazaridis opened this issue 6 years ago • 2 comments

Trying to use session data in socket resulting to "undefined". '

(app.js)

const express = require("express"); const express_validator = require("express-validator"); const path = require("path"); const body_parser = require("body-parser"); const nunjucks = require("nunjucks"); const socket = require("socket.io"); const mysql = require("mysql"); const cookieParser = require("cookie-parser"); const session = require("express-session")({ resave: true, saveUninitialized: true, secret: "Test" });

//Main application var app = express(); var server = app.listen(3000, () => { console.log("Server is started.."); });

//Static configuration app.use(express.static("public"));

//View configuration nunjucks.configure("views", { express: app, watch: true, autoescape: true }); app.set("views", path.join(__dirname, "views")); app.set("view engine", "nunjucks");

//Middlewares app.use(express_validator()); app.use(body_parser.json()); app.use(body_parser.urlencoded({extended: false})); app.use(cookieParser()); app.use(session);

var sharedsession = require("express-socket.io-session");

//Routes configuration app.use(require("./routes/main-routes/index"));

//Socket configuration var io = socket(server); io.use(sharedsession(session, { autoSave: true }))

var socket_handler = require("./socket.io/socket")(io);

(socket.js)

module.exports = function(io) { io.sockets.on("connection", (socket) => { console.log(socket.handshake.session.username) //Username is set when logging in } }

(index.js) //Route handler

router.route("/") .get((req, res) => { res.render("index"); }) .post((req, res) => { let sql = "SELECT * FROM user_data WHERE username = ? AND password = ?"; let query = db.query(sql, [req.body.username, crypt.encrypt(req.body.password)], (err, result) => { if (err) { console.log(err); res.render("index", { error: "Contact admin" }) } else { //Check if user exist, if so logg user if (result[0] != null) { req.session.username = req.body.username; // <-- Giving session .username value. res.redirect("/chat"); }else { res.render("index", { error: "Invalid username or password" }) } } }) }); express ^ 4.16.3 socket.io ^ 2.1.0

harry-lazaridis avatar Apr 05 '18 18:04 harry-lazaridis

Did you ever figure this out?

ellisgl avatar Jan 05 '19 16:01 ellisgl

Did you ever figure this out? ²

renanxx1 avatar Feb 26 '21 17:02 renanxx1