Sitzung bedarf keiner Einführung, sodass ein http einem Endbenutzer entsprechen kann.
Das Wesentliche der Sitzung wird mithilfe von Cookies implementiert.
Das Prinzip ist wahrscheinlich: HTTP bringt den Server dazu, Cookies im Voraus zu setzen, der Server erhält das Cookie, das die Identität des Benutzers angibt, und geht dann zu einem festen Ort (Datenbank, Datei), um die entsprechende Benutzeridentität abzurufen. Weisen Sie der Anfrage dieser Anfrage die Identität zu, und die Identität des Benutzers wird während der Programmverarbeitung bekannt sein. (Es wird automatisch für Sie in PHP, ASP oder anderen serverseitigen Sprachen implementiert)
Cookies implementieren
Für jeden Benutzer muss ein Cookie gesetzt werden, das den Benutzer identifiziert. Sie können die folgenden Regeln verwenden
MD5-Wert der registrierten E-Mail-Adresse, MD5-Wert des Passworts und MD5-Wert des Zufallscodes. (Nur ein Beispiel, dies ist möglicherweise keine gute Lösung)
Server-Code-Snippet:
res.setHeader("Set-Cookie", ["sid="+newUser.toCookie()+";path=/;domain="+config.domain+";expires="+new Date("2030") ]);
Cookie
sid=275fccab7935736ff68c95c3ddbfaaee|275fccab7935736ff68c95c3ddbfaaee|275fccab7935736ff68c95c3ddbfaaee
Verwenden Sie Cookies, um eine Benutzeridentität zu erhalten und eine Sitzung einzurichten
Leiten Sie alle nicht statischen Ressourcenanfragen zur Verarbeitung hierher. Holen Sie sich das Cookie, teilen Sie das Cookie und finden Sie qualifizierte Benutzer in der Datenbank. Verwenden Sie schließlich „next“, um zur nächsten Anforderungslogik zu springen.
Die nächste Anforderungslogik besteht darin, req.session.user direkt zu verwenden, um das Benutzerobjekt abzurufen.
session:function(req, res, next){ req.session = {}; if( req.cookies && req.cookies.sid ){ var a = req.cookies.sid.split("|"); var hexMail = a[0]; var hexPwd = a[1]; var hexRandom = a[2]; UserModel.hexFind(hexMail, hexPwd, hexRandom, function( status ){ //console.log("hexFind", status ); if(status.code == "0"){ //req.cookiesSelecter = cookiesSelecter; req.session.user = status.result; } next(); }); }else{ next(); } }
Lassen Sie mich darüber sprechen, wie NodeJS die Identitätsauthentifizierung durch Sitzung implementiert
nodejs Express-Sitzungsauthentifizierung
1) Modul importieren
var session = require('express-session'); var cookieParser = require('cookie-parser');
2) Cookie und Sitzung anwenden
app.use(cookieParser()); app.use(session({ resave: true, // don't save session if unmodified saveUninitialized: false, // don't create session until something stored secret: 'love' }));
3) Wenden Sie bei der Anfrage eine Authentifizierung an
app.use(function(req,res,next){ if (!req.session.user) { if(req.url=="/login"){ next();//如果请求的地址是登录则通过,进行下一个请求 } else { res.redirect('/login'); } } else if (req.session.user) { next(); } });
4) Login-Design
app.get('/login',function(req,res){ res.render("login"); }); app.post('/login',function(req,res){ if(req.body.username=="love" && req.body.password=="love"){ var user = {'username':'love'}; req.session.user = user; res.redirect('/admin/app/list'); } else { res.redirect('/login'); } }); app.get('/logout',function(req,res){ req.session.user = null; res.redirect('/login'); });