Все сеансы не знают, к какому пользователю они принадлежат , если только вы не сопоставили сеанс в постоянной системе хранения, такой как кэш Redis / Memcached или MySQL, база данных MongoDB.
Вот одно из многих решений, о которых я могу подумать, как показано ниже:
Создайте модель в своем приложении sails, которое можно назвать SessionMapper
- Добавьте три столбца: userID, sessionID и isActive (логическое значение).
Теперь, когда пользователь входит в систему, создайте запись в этой модели / таблице.
- Создание промежуточного программного обеспечения, через которое будут проходить все запросы API (кроме
/login
и общедоступных API) - Это промежуточное программное обеспечение будет проверять, активен ли текущий сеанс - действует как дополнительный уровеньаутентификация.
- Если сеанс активен, предоставьте доступ /
next()
- , если сеанс недействителен или
isActive
=== false
, выйдите из системы пользователя и перенаправьте на страницу входас некоторым сообщением.
Чтобы выйти из всех активных сеансов пользователей, установите isActive
= false
для userID
= <user-id>
в SessionMapper
модели.
Примечание : Этот метод увеличит количество операций READ
на datasource
, который подключен к SessionMapper
.Переместите его в более эффективное и эффективное решение, такое как Redis / Memcached, если это мешает основным операциям.
Надеюсь, этот псевдокод поможет вам в решении вашей задачи.@tspentzas, в следующий раз, когда вы будете искать решение, добавьте все, что вы до сих пор пробовали в своем вопросе, чтобы сообщество помогло вам лучше.