Как я могу поддерживать свои СЕССИИ в Node JS? Например, я хочу сохранить UserID в SESSION, используя Node Js. Как я могу это сделать в Node JS? И могу ли я использовать эту сессию JS SESSION в PHP тоже?
я хочу
<?php $_SESSION['user'] = $userId; ?>
В узле 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.
Если вы хотите самостоятельно реализовать поддержку сеанса, то, как обычно выполняется реализация, по каждому запросу:
Вам также придется реализовать некоторый механизм тайм-аута, чтобы через некоторое время объекты сеанса удалялись, по крайней мере, из памяти.
Вы можете использовать промежуточное программное обеспечение экспресс-сессии. Объедините его с помощью 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 }); }
Надеюсь, вы получите четкое представление о сеансе.
Вы можете обрабатывать сеанс в двух направлениях.
Я думаю, что обработка сеанса на основе токенов важнее, чем использование экспресс-сессии. У вас возникнет проблема при масштабировании вашего сервера, а также проблема с какой-либо ситуацией входа в систему.
Для проверки у меня есть токена на основе узла Hanling node js folder structure. Вы можете проверить. Это может быть полезно