2015-11-24 5 views
4

Я пытался реализовать проверку подлинности и управление сеансом в приложении node.js с помощью socket.io.В чем разница между хранилищем сеансов и базой данных

И почти из всех ресурсов, которые я нашел, я натолкнулся на термин «магазин сеансов».

Есть инструменты с открытым исходным кодом, которые обрабатывают сеансы для нас, но мы должны предоставить им сеансовый магазин.

некоторых инструментов имеет встроенное хранение сессий в памяти, например, модуль express-session поставляется с по умолчанию в памяти сессии магазина, но и это предупреждение:

Предупреждение на сторону сервера хранения сессии по умолчанию , MemoryStore, специально не предназначен для производственной среды. Это будет утечка памяти в большинстве условий, не масштабируется за один процесс и предназначена для отладки и разработки.

Так я искал доступных стабильной сессии магазинах и получается, что большинство имен базы данных, которые я слышал.

Например, здесь есть list of session stores и another one в GitHub, с которыми я столкнулся.

Имена включают MongoDB, MySQL, SQLite, cassandra, firebase и т. Д., Поэтому путаница.

Итак, вопрос магазины сессии и база данных же ..? (Я могу подумать об этом - когда мы используем базу данных для хранения сведений о сеансе, мы называем это сеансовым магазином, но это база данных)

Если нет, то как они отличаются.?

ответ

0

Сессионный магазин представляет собой метод хранения информации о пользователе в качестве сеанса с уникальным идентификатором. Он может храниться в памяти или в базе данных. Socket.io может использовать тот же сеанс (id), который используется в приложении express по socket-express-session пакетам, если я не ошибаюсь.

Затем вы можете использовать информацию о сеансе для предоставления/ограничения доступа.

3

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

Сессия может быть как памятью, так и базой данных, простыми файлами или любым другим местом, которое вы можете найти для хранения данных сеанса.

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

Различие между различными сеансовыми магазинами:

  • памятью сессия магазин будет сбрасываться на каждом приложении повторного Lauch. Также его самый быстрый.
  • База данных сеансов базы данных, будет безопасной с помощью приложения re-lauch. И в какой-то момент у вас будет много объектов сеанса , которые вы можете очистить. И тот же сеанс, хранящийся в базе данных, может быть доступен даже из разных приложений.
+0

Я бы также добавил, что сессия памяти будет 99,9% сбой при использовании нескольких серверов, если у вас не возникнет какое-то странное решение синхронизации сеанса между ними. – kaytrance

+0

«вы можете настроить хранилище сеансов для использования одной и той же базы данных» * - вы имели в виду * "", вы можете использовать ту же базу данных, что и хранилище сеансов "*" ..? Поскольку первое предложение по-прежнему звучит так, как хранилище сеансов - это особый объект, который вы можете подключить к базе данных –

+0

в базе данных «хранилище сеансов» - это таблица, которая будет содержать данные, относящиеся к сеансу. – ulikus

Смежные вопросы