ExpressJS-セッション

HTTPはステートレスです。リクエストを他のリクエストに関連付けるには、HTTPリクエスト間でユーザーデータを保存する方法が必要です。CookieとURLパラメータはどちらも、クライアントとサーバー間でデータを転送するための適切な方法です。しかし、それらは読み取り可能であり、クライアント側でもあります。セッションはまさにこの問題を解決します。クライアントにIDを割り当てると、そのIDを使用してそれ以降のすべての要求が行われます。クライアントに関連付けられた情報は、このIDにリンクされたサーバーに保存されます。

Express-sessionが必要になるので、次のコードを使用してインストールします。

npm install --save express-session

入れます session そして cookie-parserミドルウェアが設置されています。この例では、セッションを保存するためのデフォルトのストア、つまりMemoryStoreを使用します。これを実稼働環境で使用しないでください。セッションミドルウェアは、セッションの作成、セッションCookieの設定、セッションオブジェクトの作成など、すべてを処理します。req オブジェクト。

同じクライアントから再度リクエストを行うと、セッション情報が保存されます(サーバーが再起動されていない場合)。セッションオブジェクトにさらにプロパティを追加できます。次の例では、クライアントのビューカウンターを作成します。

var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session');

var app = express();

app.use(cookieParser());
app.use(session({secret: "Shh, its a secret!"}));

app.get('/', function(req, res){
   if(req.session.page_views){
      req.session.page_views++;
      res.send("You visited this page " + req.session.page_views + " times");
   } else {
      req.session.page_views = 1;
      res.send("Welcome to this page for the first time!");
   }
});
app.listen(3000);

上記のコードは、ユーザーがサイトにアクセスすると、ユーザーの新しいセッションを作成し、Cookieを割り当てます。次回ユーザーが来ると、Cookieがチェックされ、page_view セッション変数はそれに応じて更新されます。

アプリを実行して localhost:3000、次の出力が表示されます。

ページに再度アクセスすると、ページカウンターが増加します。次のスクリーンショットのページは42回更新されました。