Сеансы в узле JS

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

я хочу

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

В узле Js.

Related of "Сеансы в узле JS"

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

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 = идентификатор_пользователь;

Сеанс доступа

Sess = req.session;

sess.user_id

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

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

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

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


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

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

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

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

https://github.com/expressjs/session

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

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

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

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

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

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

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

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

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

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

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

Для проверки у меня есть токена на основе узла Hanling node js folder structure. Вы можете проверить. Это может быть полезно