ホームページ ウェブフロントエンド jsチュートリアル Nodejs でのセッションの簡単な使用と、sessions_node.js による認証方法

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

May 16, 2016 pm 03:16 PM

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JavaScriptの文字列文字を交換します JavaScriptの文字列文字を交換します Mar 11, 2025 am 12:07 AM

JavaScriptの文字列文字を交換します

jQuery日付が有効かどうかを確認します jQuery日付が有効かどうかを確認します Mar 01, 2025 am 08:51 AM

jQuery日付が有効かどうかを確認します

jQueryは要素のパディング/マージンを取得します jQueryは要素のパディング/マージンを取得します Mar 01, 2025 am 08:53 AM

jQueryは要素のパディング/マージンを取得します

10 jQuery Accordionsタブ 10 jQuery Accordionsタブ Mar 01, 2025 am 01:34 AM

10 jQuery Accordionsタブ

10 jqueryプラグインをチェックする価値があります 10 jqueryプラグインをチェックする価値があります Mar 01, 2025 am 01:29 AM

10 jqueryプラグインをチェックする価値があります

ノードとHTTPコンソールを使用したHTTPデバッグ ノードとHTTPコンソールを使用したHTTPデバッグ Mar 01, 2025 am 01:37 AM

ノードとHTTPコンソールを使用したHTTPデバッグ

jQueryはscrollbarをdivに追加します jQueryはscrollbarをdivに追加します Mar 01, 2025 am 01:30 AM

jQueryはscrollbarをdivに追加します

カスタムGoogle検索APIセットアップチュートリアル カスタムGoogle検索APIセットアップチュートリアル Mar 04, 2025 am 01:06 AM

カスタムGoogle検索APIセットアップチュートリアル

See all articles