Nodejs でのセッションの簡単な使用と、sessions_node.js による認証方法

WBOY
リリース: 2016-05-16 15:16:15
オリジナル
1436 人が閲覧しました

セッションについては説明の必要はありません。そのため、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');
});
ログイン後にコピー
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート