Сеансы в Node JS

Как я могу поддерживать свои СЕССИИ в Node JS? Например, я хочу сохранить UserID в SESSION с помощью Node Js. Как я могу это сделать в Node JS? И можно ли использовать эту Node JS SESSION в PHP тоже?

Я хочу

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

В Node Js.

Ответ 1

Первая сессия установки

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

Позвольте мне разделить ваш вопрос на две части.

 1. Как я могу поддерживать свои СЕССИИ в Node JS?
Ответ: Используйте промежуточное программное обеспечение экспресс-сессии для поддержки СЕССИЙ

 2. Могу ли я использовать эту Node JS SESSION в PHP тоже?
Ответ: Да, вы можете использовать этот сеанс и в PHP, но имейте в виду, что вы должны сохранить этот сеанс в базе данных.

Ответ 3

ExpressJS имеет официальное промежуточное ПО для сеансов, это также текущая стандартная веб-инфраструктура для Node.js.


Если вы хотите самостоятельно реализовать поддержку сеанса, то, как обычно выполняется реализация, по каждому запросу:

  • Проверьте, содержит ли файл cookie идентификатор сеанса
    • Если нет, создайте объект сеанса, который либо хранится в памяти, либо в файле, либо в базе данных (или их комбинации), и установите идентификатор сеанса в куки-ответе для ответа на этот идентификатор объекта.
    • Если файл cookie содержит идентификатор сеанса, найдите объект сеанса по идентификатору.
  • Предоставить полученный/созданный объект с шага 1 в качестве сохраняемого объекта сеанса для запроса.

Вам также придется реализовать некоторый механизм тайм-аута, чтобы через некоторое время объекты сеанса удалялись, по крайней мере, из памяти.

Ответ 4

Вы можете использовать промежуточное программное обеспечение экспресс-сессии. Объедините его с помощью connect-redis или connect-mongo для хранения ваших сессий в базе данных и сохраните память, если память вам ценна (например, в настройке облака).

https://github.com/expressjs/session

https://www.npmjs.com/package/express-sessions

Если вы храните его в mongodb, используйте драйвер php mongo, чтобы забрать его оттуда.

Ответ 5

Вам не нужно это делать самостоятельно. В nodeJS есть несколько удивительных модулей, которые обрабатывают такие вещи для вас.

Вы можете использовать промежуточное ПО сеанса из выражения, как было предложено ранее.

Однако, я бы рекомендовал вам использовать паспорт. Этот модуль выполняет часть аутентификации для вас, имеет множество стратегий, которые вы могли бы интегрировать на свой сайт (логин с facebook, google, твиттер и т.д. И т.д.) И автоматически обрабатывать все материалы сеанса, используя serializeUser() и deserializeUser(), когда вам нужно.

Вы можете посмотреть здесь, в разделе сеанса: http://passportjs.org/docs/configure

Ответ 6

Сессия, которая дает доступ/разрешение на просмотр пользовательской области, а также учетных данных, чтобы мы могли использовать ее поверх приложения. Я использовал jsonwebtoken для создания токена, который будет содержать данные пользователя со временем после успешной попытки входа пользователя. Я сохранил его в Redis, и его можно использовать в течение заранее объявленного срока.

Ответ 7

Чтобы поддерживать сеанс, вы стареете. Вы должны попробовать с JWT token, это очень эффективно и просто. Но для поддержания сеанса в Node 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
                });
            }

Надеюсь, вы получите четкое представление о сеансе.

Ответ 8

Выполните следующие действия:

1. npm install express-session --save
2. Write below code:
    var express = require('express');
    var session = require('express-session');
    var app = express();
    app.use(session({secret: 'your secret key', saveUninitialized: true, resave: true}));
    var userId = 1234;
    app.get('/', function (req, res, next) {
        req.session.userId = userId;
    }); 

Ответ 9

Вы можете обрабатывать сеанс в двух направлениях.

  • Использование экспресс-сессии
  • Использование веб-маркера JWT и управление собственным сеансом (обработка сеанса на основе токена).

Я думаю, что обработка сеансов на основе токенов важнее, чем использование экспресс-сессии. У вас возникнет проблема при масштабировании сервера, а также проблема с ситуацией входа в систему.

Для проверки у меня Token Based Session Hanling node Структура папки js. Вы можете проверить. Это может быть полезно