/ / Express et Redis - Si une session existe pour cet utilisateur, n'autorisez pas l'accès - node.js, session, express, redis

Express et Redis - Si une session existe pour cet utilisateur, n'autorisez pas l'accès - node.js, session, express, redis

J'utilise Redis et Express comme ceci:

// app.js
var redis         = require("redis"),
redisClient   = redis.createClient(),
session       = require("express-session"),
RedisStore    = require("connect-redis")(session);

session = session({
store: new RedisStore({client: redisClient}),
secret: "secretKey",
resave: true,
saveUninitialized: true
})

app.use (session);

Dans mon fichier de routage d'index, j'ai défini une session utilisateur comme celle-ci:

req.session.user = user;

Lorsque cet utilisateur revient (ou ouvre un autre onglet), comment puis-je détecter le nombre de sessions en cours et lui bloquer l'accès s'il a déjà une session active?

Réponses:

0 pour la réponse № 1

express-session travaillant via des cookies. Donc, vous avez appelé cookie session avec quelque sessionId. Tous les onglets de la page consultée partagent des cookies et vous ne pouvez pas vous fier aux cookies si vous souhaitez travailler strictement via un seul onglet de navigateur.

Vous devez créer vos propres sessions pour chaque onglet de navigateur ouvert. Quelque chose comme générer TabId côté client et enregistrer {userId, tabId} à Redis

Ou vous pouvez utiliser des websockets (http://socket.io/) pour cela, un peu de frais généraux, mais en faisant exactement ce que vous voulez