Сеансы в 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. Вы можете проверить.
Это может быть полезно