Ergebnis 1 bis 6 von 6
-
31-07-2016, 19:24 #1
Gleich nach Login ausgeloggt, expressjs
Ich habe ein echt nerviges Problem bei meinem Login System.
Ich werde nach einer Zufälligen zeit aus den System ausgeloggt, meist nach ein paar sec.
Mach mal klappt es aber auch.
login route:
Code:app.post("/login", function(req, res) { var userName = req.body.email; var pass = req.body.password; var remember = req.body.remember; //cookie zrücksetzen if(req.session.cookie.maxAge !== null){ delete req.session.cookie.maxAge; delete req.session.cookie.expires; //req.session.cookie.maxAge = null; //req.session.cookie.expires = false;// or null } athenticate(req.body.email, req.body.password, function(err, id, callsign) { if (err) { return modifyForms("login", err.message, function(err, result) { if (err) { res.send(err); } else { res.send(result); } }) } else { if (id) { checkConfirmed(callsign, function(err) { if (err) { return modifyForms("login", err.message, function(result) { res.send(result); }); } else { if (remember) { var hour = 60 * 60 * 1000; req.session.cookie.expires = new Date(Date.now() + hour); req.session.cookie.maxAge = hour; } req.session.callsign = callsign; req.session.uid = id; res.redirect('profile?tab=dashboard'); } }); } else { req.session.error = "Login failed, try again"; res.redirect('login'); } //if id } }); });
Code:if (remember) { var hour = 60 * 60 * 1000; req.session.cookie.expires = new Date(Date.now() + hour); req.session.cookie.maxAge = hour; } req.session.callsign = callsign; req.session.uid = id; res.redirect('profile?tab=dashboard'); }
Code:if(req.session.cookie.maxAge !== null){ delete req.session.cookie.maxAge; delete req.session.cookie.expires; //req.session.cookie.maxAge = null; //req.session.cookie.expires = false;// or null }
Aber wie setzt man das Cookie richtig zurück.
Delete oder req.session.cookie.maxAge = null; oder req.session.cookie.maxAge = false ??
Vollständigkeitshalber der Counter mit ip sperre
Code:app.get("/", tracker, function(req, res) { //counter stuff var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress; var hour = 60 * 60 * 1000 * 8; //8 Stunden //wenn user eingelogt gehe nicht in die couter if (!req.session.uid) { //wenn ip noch nicht vorhanden zähle user if (!req.session.ip || req.session.ip !== ip) { fs.readFile(__dirname+"/counts.txt", "utf8", function(err, data) { var wstream = fs.createWriteStream(__dirname+"/counts.txt", "utf8"); if (err) { throw err; } var counts = parseInt(data.split("\n")[0]); //nur erste zeile counts += 1; wstream.end(String(counts)); }); req.session.ip = ip; req.session.cookie.expires = new Date(Date.now() + hour); req.session.cookie.maxAge = hour; clicksToDay += 1; } } .... ......
if (remember)
true ist.
Ich nutze express4.x mit express-session-middleware
Ich nutze den standart memory Store, reicht für lokale Anwendung und 10 user.
Die Initialisierung:
Code:var session = require("express-session"); var memoryStore = new session.MemoryStore(); var sessionOptions = { store: memoryStore, secret: "*******", saveUninitialized: false, proxy: true, resave: true, cookie: { secure: false } }; app.use("/piwik/plugins", express.static(__dirname + "/phpdocs/piwik/plugins")); app.use("/piwik/libs", express.static(__dirname + "/phpdocs/piwik/libs")); app.use("/adminer/images", express.static(__dirname + "/phpdocs/adminer/images")); app.use("/adminer/css", express.static(__dirname + "/phpdocs/adminer/css")); app.use("/adminer/fonts", express.static(__dirname + "/phpdocs/adminer/fonts")); app.all(/.+\.php$/, php.cgi("./phpdocs")) app.use(bodyParser.urlencoded({extended: true})); app.use(bodyParser.json()); app.use(session(sessionOptions)); app.use("/grabber/css", express.static(__dirname + "/css")); app.use("/css", express.static(__dirname + "/css")); app.use("/img", express.static(__dirname + "/img")); app.use("/grabber/lib", express.static(__dirname + "/scripts"));
Mansch mal liegt es der reinfolge der Initialisierung.
Das Problem macht mich echt wild
Für konstruktive Vorschläge wäre ich sehr, sehr, dankbar.
-
01-08-2016, 19:33 #2
AW: Gleich nach Login ausgeloggt, expressjs
Aha, wichtig Erkenntnis.
Ich führe node in einem cluster aus.
https://nodejs.org/api/cluster.html#cluster_cluster
Dann erst tritt das Problem auf.
Aber wie lösen?
-
04-08-2016, 09:32 #3
AW: Gleich nach Login ausgeloggt, expressjs
Wird ev. die session nicht innerhalb des clusters geteilt? (Bzw. wie werden die Sessiondaten gespeichert? Wenn die nur im RAM sitzen, musst du die Sessionverwaltung eigentlich im Master machen...)
Dann könntest du manchmal auf einen anderen Worker kommen, der dich dann natürlich nicht kennt.
-
07-08-2016, 12:28 #4
AW: Gleich nach Login ausgeloggt, expressjs
Zitat von kkapsner
node.js - Nodejs Clustering and expressjs sessions - Stack Overflow
Zitat von kkapsner
Zitat von kkapsner
Aktuell ist der Aufbau so:
Code:var cluster = require('cluster'); var numCPUs = require('os').cpus().length; if (cluster.isMaster) { // Fork workers. for (var i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', function(worker, code, signal) { console.log("worker " + worker.process.pid + " died"); }); } else { var bodyParser = require('body-parser'); var session = require("express-session"); var express = require("express"); var mysql = require("mysql") //.... //... usw... var memoryStore = new session.MemoryStore(); var sessionOptions = { store: memoryStore, secret: "******", saveUninitialized: false, proxy: true, resave: true, cookie: { secure: false } }; //... //..... app.use(session(sessionOptions)); W_Server.listen(2000, function() { console.log("Server listen at port 2000") }); } //cluster
-
08-08-2016, 09:22 #5
Foren-Gott
- registriert
- 19-05-2008
- Beiträge
- 5.667
AW: Gleich nach Login ausgeloggt, expressjs
die lösung steht doch in deinem link. wenn du als datenspeicher bei allen eine db nimst, haben alle zugriff auf die daten, wenn es ein stück speicher ist wie bei dir, hat jeder prozess eigene daten, was nicht gewünscht ist.
-
08-08-2016, 21:51 #6
AW: Gleich nach Login ausgeloggt, expressjs
Ja gut, dann werde ich das wohl einbasteln müssen. ist ja so viel auch nicht.
Ähnliche Themen
-
Eigenartiges verhalten bei Logout mit expressjs
Von xorg1990 im Forum Node.jsAntworten: 2Letzter Beitrag: 29-07-2016, 13:19 -
[FRAGE] website auslesen nach login
Von cyb0rg im Forum JavaScriptAntworten: 17Letzter Beitrag: 14-07-2016, 16:40 -
expressjs response zu JqueryAjax will nicht
Von xorg1990 im Forum AjaxAntworten: 4Letzter Beitrag: 01-09-2015, 21:22 -
Amok! Ausgeloggt und dann vergessen ...
Von SteelWheel im Forum ForumAntworten: 2Letzter Beitrag: 17-08-2015, 06:55 -
weiterleitung nach login
Von manfredi im Forum Serverseitige ProgrammierungAntworten: 16Letzter Beitrag: 15-05-2006, 09:11
Lesezeichen