Speichern session-Daten mit MemoryStore in Knoten, ähnlich wie $_SESSION['Daten'] = Wert in PHP
Frage:
Ist es möglich, zum speichern von session-Daten ähnlich wie $_SESSION['somedata'] = "Hallo" in php?
Hier ist mein code bisher:
Erstellen der Speicher
var MemoryStore = express.session.MemoryStore,
sessionStore = new MemoryStore();
Express Config
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({
store: sessionStore,
secret: 'secret',
key: 'express.sid'}));
app.use(require('stylus').middleware({src: __dirname + '/public'}));
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
Analyse der cookie die session-id auf handshake authorization
var parseCookie = require('connect').utils.parseCookie;
io.set('authorization', function (data, accept) {
if (data.headers.cookie) {
data.cookie = parseCookie(data.headers.cookie);
data.sessionID = data.cookie['express.sid'];
sessionStore.get(data.sessionID, function (err, session) {
if (err)
{
accept(err.message, false); //Turn down the connection
}
else
{
data.session = session; //Accept the session
accept(null, true);
}
});
} else {
return accept('No cookie transmitted.', false);
}
});
Speichern 'loggedin', wenn das Passwort und der Benutzername "admin"
io.sockets.on('connection', function (socket) {
socket.on('details', function(data){
console.log("Details: " + data.u + data.p);
if(data.p == "admin" && data.u == "admin")
{
//Add the logged in field to the session
}
});
});
, Wenn der Benutzer angemeldet ist, leiten Sie Sie auf die home page
app.get(navigation.login.uri, function(req, res){
if(req.session.loggedin)
{
res.redirect('/home');
}
else
{
res.render('login', {
title: navigation.login.title,
navigation: navigation
});
}
});
Wenn ich versuche zu verwenden:
req.session.loggedIn
Der Wert ist undefiniert. Könnte das ein Speicher-problem, oder bin ich auf es zu nicht korrekt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist in der Nähe - nur fehlen ein paar Dinge.
Die Informationen, die Sie sammeln sich in der Buchse Genehmigung Funktion ist erreichbar über die Steckdose.handshake in Ihrem Verbindungs-handler.
So, ich denke, was Sie wollen, ist:
Vergessen Sie nicht, speichern Sie die Sitzung, nach der änderung ist es anders, es wird nie wieder in den laden.
Dieser arbeitete für mich - Sie haben im Grunde nur um einen Schlüssel in der sessionStore:
Versuchte ich es auf eine website mit einigen Unterseiten, war der Wert konstant. Ein erzwungener reload oder schließen des Browsers zurückgesetzt.