Node.js で SESSIONS を維持するにはどうすればよいですか?
たとえば、Node.js を使用して UserID を SESSION に格納したいとします。Node.jsでそれを行うにはどうすればよいですか? また、その Node.js SESSION を PHP でも使用できますか?
Node.js に次のものが必要です。
<?php $_SESSION['user'] = $userId; ?>
Node.js で SESSIONS を維持するにはどうすればよいですか?
たとえば、Node.js を使用して UserID を SESSION に格納したいとします。Node.jsでそれを行うにはどうすればよいですか? また、その Node.js SESSION を PHP でも使用できますか?
Node.js に次のものが必要です。
<?php $_SESSION['user'] = $userId; ?>
npm install express-session --save
var express = require('express');
var session = require('express-session');
var app = express();
app.use(session({secret: 'ssshhhhh', saveUninitialized: true, resave: true}));
sess = req.session;
var user_id = 1;
sess.user_id = user_id;
sess = req.session;
sess.user_id
質問を 2 つの部分に分けさせてください。
ExpressJS には公式のセッション ミドルウェアがあり、Node.js の現在の事実上の標準 Web フレームワークでもあります。
セッションサポートを独自に実装したい場合、これは通常、リクエストごとに次のように実装されます。
また、タイムアウト メカニズムを実装して、しばらくするとセッション オブジェクトが少なくともメモリから削除されるようにする必要があります。
Express-sessionミドルウェアを使用できます。
これをconnect-redisまたはconnect-mongoと組み合わせて、セッションをデータベース内に保存し、メモリが貴重な場合 (クラウド セットアップなど) にメモリを節約します。
エクスプレスセッション(npm)
たとえばMongoDBに保存する場合は、PHP MongoDBドライバーを使用してそこから取得します。
セッションを維持するのは古いため、JWTトークンを使用してみてください。それは非常に効果的で簡単です。ただし、Node.js でセッションを維持するには、次のようにします。
Express.js 構成で:
var cookieParser = require('cookie-parser');
var session = require('express-session');
app.use(cookieParser());
app.use(session({
secret: 'secret',
resave: true,
saveUninitialized: true,
rolling: true,
cookie: {
path: '/',
maxAge: 60000 * 1000
},
name: 'SID'
}));
ログイン後にセッションを保存:
var session = req.session;
if (user) {
session.user = user._id;
session.save();
console.log(session);
}
ミドルウェアからセッションを確認します。
var session = req.session;
if (session.user) {
req.userid = session.user;
next();
} else {
return res.status(401).send({
code: 401,
message: Constant.authentication_fails
});
}
Node.js の「express-session」パッケージを使用して、Node.js でセッションを使用できます。
アプリケーションにExpressとExpress-sessionをインストールする必要があります。
const express = require('express');
const session = require('express-session');
const app = express();
「シークレット」は Cookie に使用され、セッションを管理するためのシークレットを追加する必要があります。「request」は、PHP で $_SESSION を使用するため、リクエスト変数として使用します。
var sess;
app.get('/',function(req,res){ // Get request from the app side
sess = req.session;
sess.email; // Equivalent to $_SESSION['email'] in PHP.
sess.username; // Equivalent to $_SESSION['username'] in PHP.
});
Node.js のセッションについて詳しく知りたい場合は、Node.js のセッションに関するCode for Geekの完全なドキュメントを参照してください。