Здравствуйте, для авторизации в приложении на node использую сессии, в них я храню кроме инфы о пользователе инфу о доступной валюте. Возник вопрос, как мне обновить значение этой валюты у клиента, если я из админки изменил её количество?
Не храните информацию, которая не касается пользователя, в сессии.
Используйте для этого базы данных и кэш, например, Redis или Memcached.
В кэшах есть специальный механизм зависимостей, который сбрасывает кэш, как только были обнаружены изменения по зависимостям.
Роли следует хранить в кэше однозначно. Вообще сессия должна содержать только ту информацию, которая связана непосредственно с фактом присутствия пользователя. Т.е., его id, auth_token.
Все, что может изменить администратор, управляющий пользователями, не следует добавлять в сессию, иначе изменения пользователь заметит только после вылогинивания.
в общем это выглядит так:
для того, чтобы сохранить кэш, вам нужно придумать ключ.
Если это общий кэш, например, количество всех сообщений (хотя такую штуку лучше не кешировать, да), то он сохраняется по ключу, например, "counter_messages".
А если кэш хранит уникальные для каждого пользователя вещи, например, роли, то выглядеть он будет так:user<id>-profileinfo, где <id> это число.
Таким образом, при обновлении профиля юзера с id = 5 (неважно, кем он обновлен: самим юзером или админом), вы перезаписываете user5-profileinfo, и кэш таким образом снова хранит валидные данные.
Считайте что это та же сессия, только доступна она по какому-то общему имени, которое вы сами можете ей придумать)