Управление сессиями в Node.js?

Каков наилучший способ управления переменными сеанса в Node.js? Есть ли библиотека?

5 ответов

Решение

Вы можете сделать это очень легко, используя:

  • Connect: http://senchalabs.github.com/connect/

    Подключается как Rack in Ruby. Это дает вам дополнительный слой, где вы можете "играть" с аутентификацией, сессиями, cookie-файлами и другими.

Другой вариант - использовать фреймворки:

  • Express.js: http://expressjs.com/

    Кажется, это наиболее используемая среда для node.js. Это как Sinatra для Ruby и работает поверх Connect.

  • Гедди: http://geddyjs.org/

    Если вы хотите сделать более сложные WebApps, Geddy - это то, что вы выберете. Это как Rails для Ruby.

Просто перегрузите его в memcache или другой механизм кэширования. Я бы не стал обременять ваши серверы подобными вещами. Какой смысл в супер худом веб-сервере, который должен запоминать вещи.

Я также попытался бы разработать ваш сайт как приложение, а не как веб-сайт, или рассматривать ваш сайт как приложение, использовать замечательные функции html5, такие как локальное хранилище / локальные базы данных, и сократить объем трафика между сервером и клиентскими компьютерами.,

Если все остальное терпит неудачу (или сайт маленький), то что мешает вам написать свой собственный класс сеанса. Не так сложно Особенно если это в памяти типа вещь. Поместите некоторую логику таймера в сеансы тайм-аута, и все. Черт на динамическом языке, таком как JavaScript, должно быть легко.

Структура должна представлять собой словарь, ключом которого является сеанс, а значением - объект, содержащий сведения о последних связях и возможностях (для обеспечения доступа к определенным функциям). Добавьте функцию очистки, чтобы убрать старые сеансы, которые истекли. и бинго. Базовый сервис сессий. базовая проверка на "является ключом сеанса в списке... да / нет... получить подробности"... и я думаю, что это так.... или есть какая-то функция, которую мне не хватает.

Я лично избегал бы любого стороннего инструмента там как можно дольше. Пески времени меняются очень быстро, и вы всегда можете зависеть от кода, разработанного вами.

nodejs предоставляет базовый http API. http не имеет состояния, и идеи сессий и переменных сессий существуют в каркасе / протоколах, построенных поверх http. http://en.wikipedia.org/wiki/Session_%28computer_science%29

Взгляните на http://geddyjs.org/ или http://expressjs.com/ как примеры веб-фреймворков, созданных с помощью узла, который предоставляет сеансы.

Ответ Дональда хорош - как только вы попадаете в шаблон связующего промежуточного программного обеспечения, вы должны решить, какой тип хранилища сеансов использовать. В экспрессе по умолчанию используется MemoryStore, и он не предназначен для производственного использования. Вот некоторые из ваших вариантов:

Mongo https://github.com/mikkel/express-session-mongo - обязательно используйте параметр "native_parser:false"

Redis https://github.com/visionmedia/connect-redis - очень хорошо, но если вы еще не используете redis для публикации / подписки или хранения, это может быть не идеально.

Обратите внимание, есть и другие варианты - это зависит от вашего проекта. Ищите что-то, что вы можете представить, используя свой существующий технологический стек.

Если вы ищете серьезную веб-разработку с использованием Node.js, используйте Express Framework; он поддерживает сессии.

Создайте проект Express с опциями --sessions.

$ express --sessions

Чтобы установить Express:

$ npm install express -g
Другие вопросы по тегам