セッションについては説明の必要はありません。そのため、1 つの http が 1 人のエンド ユーザーに対応します。
セッションの本質は Cookie を使用して実装されます。
原理はおそらく次のとおりです。http はサーバーに事前に Cookie を設定させ、サーバーはユーザーの ID を示す Cookie を取得し、次に固定の場所 (データベース、ファイル) に移動して、対応するユーザー ID を取得します。このリクエストのリクエストに ID を割り当てると、ユーザーの ID はプログラムの処理中に認識されます。 (PHP、ASP、またはその他のサーバーサイド言語で自動的に実装されます)
Cookie を実装する
ユーザーを識別するCookieはユーザーごとに設定する必要があります。次のルールを使用できます
登録メールアドレスのMD5値 + パスワードのMD5値 + ランダムコードのMD5値。 (単なる例です。これは適切な解決策ではない可能性があります)
サーバーコードスニペット:
res.setHeader("Set-Cookie", ["sid="+newUser.toCookie()+";path=/;domain="+config.domain+";expires="+new Date("2030") ]);
クッキー
sid=275fccab7935736ff68c95c3ddbfaaee|275fccab7935736ff68c95c3ddbfaaee|275fccab7935736ff68c95c3ddbfaaee
Cookie を使用してユーザー ID を取得し、セッションを設定します
すべての非静的リソース要求をここで処理します。 Cookie を取得し、Cookie を分割し、データベース内で資格のあるユーザーを見つけます。最後に、next を使用して次のリクエスト ロジックに移動します。
次のリクエスト ロジックは、req.session.user を直接使用してユーザー オブジェクトを取得することです。
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(); } }
nodejs がセッションを通じて ID 認証を実装する方法について話しましょう
nodejs Express セッション認証
1) インポートモジュール
var session = require('express-session'); var cookieParser = require('cookie-parser');
2) Cookie とセッションを適用します
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) リクエスト時に認証を適用します
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) ログインデザイン
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'); });