15

Node.js で SESSIONS を維持するにはどうすればよいですか?

たとえば、Node.js を使用して UserID を SESSION に格納したいとします。Node.jsでそれを行うにはどうすればよいですか? また、その Node.js SESSION を PHP でも使用できますか?

Node.js に次のものが必要です。

<?php $_SESSION['user'] = $userId; ?>
4

11 に答える 11

15

最初にセッションパッケージをインストールします

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
于 2015-12-17T11:30:18.787 に答える
9

質問を 2 つの部分に分けさせてください。

  1. Node.js で SESSIONS を維持するにはどうすればよいですか?
    回答: SESSIONS を維持するには、高速セッション ミドルウェアを使用します。
  2. PHPでもNode.js SESSIONを使用できますか?
    回答: はい、そのセッションを PHP でも使用できますが、そのセッションをデータベースに保存する必要があることに注意してください。
于 2015-02-04T17:57:56.320 に答える
8

ExpressJS には公式のセッション ミドルウェアがあり、Node.js の現在の事実上の標準 Web フレームワークでもあります。


セッションサポートを独自に実装したい場合、これは通常、リクエストごとに次のように実装されます。

  1. Cookie にセッション ID が含まれているかどうかを確認する
    • そうでない場合は、メモリ、ファイル、またはデータベース (またはそれらの組み合わせ) に保存されるセッション オブジェクトを作成し、応答 Cookie にセッション ID を設定して、このオブジェクトの識別子と一致させます。
    • Cookie にセッション ID が含まれている場合は、ID でセッション オブジェクトを見つけます。
  2. ステップ 1 で取得/作成したオブジェクトを、要求の永続セッション オブジェクトとして提供します。

また、タイムアウト メカニズムを実装して、しばらくするとセッション オブジェクトが少なくともメモリから削除されるようにする必要があります。

于 2013-11-07T08:07:09.277 に答える
3

Express-sessionミドルウェアを使用できます。

これをconnect-redisまたはconnect-mongoと組み合わせて、セッションをデータベース内に保存し、メモリが貴重な場合 (クラウド セットアップなど) にメモリを節約します。

エクスプレスセッション(npm)

たとえばMongoDBに保存する場合は、PHP MongoDBドライバーを使用してそこから取得します。

于 2015-01-26T16:11:45.320 に答える
0

セッションを維持するのは古いため、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
                });
            }
于 2017-01-04T06:29:33.037 に答える
0

Node.js の「express-session」パッケージを使用して、Node.js でセッションを使用できます。

アプリケーションにExpressExpress-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の完全なドキュメントを参照してください。

于 2021-01-27T05:37:34.073 に答える