Da die Verbindung nicht die parseCookie Methode mehr, wie können wir die session-Daten mit express?
In node.js und express, es gibt viele Beispiele, die zeigen, wie man die session-Daten.
Wie Sie sehen können, wenn Sie den Besuch der 3. link ist ein link zu StackOverflow. Es war eine gute Antwort, aber wie schon in den Kommentaren von @UpTheCreek, die Verbindung hat nicht mehr die parseCookie Methode. Ich habe genau dieses problem auch. Alle tutorials die ich gefunden habe, nutzt connect parseCookie
Methode, die jetzt nicht vorhanden ist. Also fragte ich ihn, wie wir bekommen können die session-Daten und er sagte, er weiß nicht der beste Ansatz, also dachte ich, ich poste die Frage hier. Bei der Verwendung von [email protected]
, socket.io
, und redis
, wie kann man die session-Daten und verwenden Sie, dass zur Autorisierung der Benutzer? Ich habe in der Lage zu verwenden require('connect').utils.parseSignedCookie;
, aber wenn ich das mache, bekomme ich immer eine Warnung/Fehlermeldung, wenn handshaking,
warn - handshake error Error
und von dem, was ich gelesen habe klingt es wie das ist nicht eine dauerhafte Lösung sowieso.
UPDATE
Ok ich habe session.socket.io
arbeiten auf meinem server. Und wie ich vermutet hatte, ich steckengeblieben an dem Punkt, der anweisungsbefugten. Ich glaube, ich könnte gehen über dies der falsche Weg, so fühlen sich frei, mich zu korrigieren. In meinem Redis-Datenbank, habe ich die user Daten. Sie sich das erste mal anmelden, ich will ein update seiner cookie, so dass es enthält Ihre Benutzer-Informationen. Dann das nächste mal kommen Sie zurück auf die Website, die ich überprüfen möchten, wenn Sie ein cookie, und wenn der Benutzer Informationen gibt es. Wenn Sie es nicht ist, ich möchte Sie zu schicken, um den login-Bildschirm. Auf dem login-Bildschirm, wenn ein Benutzer sendet Informationen, es würde testen, die Informationen gegen die Redis-Datenbank, und wenn es passt, es aktualisieren würde, das cookie mit der information der Benutzer. Meine Fragen sind diese:
1) Wie kann ich aktualisieren/ändern ein cookie durch RedisStore?
2) Es sieht aus wie die session-Daten werden nur gespeichert, in cookies. Wie kann ich verfolgen, Informationen für den Benutzer von Seite zu Seite, wenn jemand cookies deaktiviert?
Hier ist mein entsprechender code:
//...hiding unapplicable code...
var redis = require('socket.io/node_modules/redis');
var client = redis.createClient();
var RedisStore = require('connect-redis')(express);
var redis_store = new RedisStore();
var cookieParser = express.cookieParser('secret');
app.configure(function(){
//...hiding unapplicable code...
app.use(cookieParser);
app.use(express.session({secret: 'secret', store: redis_store}));
});
//...hiding code that starts the server and socket.io
var SessionSockets = require('session.socket.io');
var ssockets = new SessionSockets(io, redis_store, cookieParser);
io.configure(function(){
io.set('authorization', function(handshake, callback){
if(handshake.headers.cookie){
//var cookie = parseCookie(handshake.headers.cookie);
//if(cookie.user){
// handshake.user = cookie.user;
//}
}
callback(null, true);
});
});
ssockets.on('connection', function(err, socket, session){ ... });
- Nicht das abdeckt, was du suchst? stackoverflow.com/questions/11680997/...
- Das sieht gut aus. Ich werde spielen, um mit ihm nach der Arbeit und ich werde Sie wissen lassen.
- wie hat es funktioniert?
- Ich sah es, aber ich hatte keine Zeit, um zu versuchen und umzusetzen, haha. Ich denke, ich werde in der Lage sein zu implementieren
session.socket.io
mitRedisStore
einfach genug, aber ich wird wahrscheinlich führen Sie in Schwierigkeiten, wenn Sie versuchen, um ZugriffRedis
bei der ersten Genehmigung. Ich werde updates posten entlang des Weges. - Für express 4 & socket.io-1.x stackoverflow.com/a/25618636/153718
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie einen Blick auf Buchse.io ' s wiki. Besonders die Teile, die Konfigurieren Der Steckdose.IO und Autorisierung und handshaking.
Er zeigt, wie man socket.io mit einer
RedisStore
und gibt zwei verschiedene Autorisierungs-Methoden.Weitere Informationen über das anschließen express v3, redis und Steckdose.io
RedisStore
. Zum Beispiel, ich möchte die Benutzer melden sich mit Ihrer e-mail und Passwort, und dann nach der Anmeldung die session-Daten zu halten, die Sie unterzeichnet. So in der Zulassung, vergleichen Sie Ihre Eingabe mit der Redis-Datenbank, und dann, wenn es richtig ist, autorisieren Sie und hinzufügen, dass diehandshakeData
variable. So Ihr Beispiel ist einfach zu vage für mich. Wenn Sie konnten zeigen, mir ein Beispiel dafür, wie zu tun, die, wären Sie mein held, haha. 🙂Nach der Umstellung auf
session.socket.io
für eine Weile, ich lief in einige Probleme, die durch die asynchrone Natur von dem Modul beim laden der session-Informationen. So landete ich also meinen eigenen Modul namens session.io. Es wird wie folgt verwendet:Ihre Fragen:
Cookies /Sessions /RedisStore Gedanken:
Beispiel node.js Code:
Session-und Cookie-Gedanken:
Session-Daten ist verfügbar mit:
req
ist nicht verfügbar in eine Steckdose.IO-connection-handler.