У вас будет гораздо больше везения, если вы будете поддерживать его с точки зрения компонента или модуля, а не таблицы. На мой взгляд, вам нужны следующие интерфейсы.
public interface IActiveUsers {
bool IsUserActive(User u);
}
public interface ITrackActiveUsers {
void MarkUserAsActive(User u);
}
Вы можете реализовать их, используя базу данных, но почему бы просто не использовать встроенный кеш выбранной веб-платформы?
В основном, когда пользователь помечается как активный, вставьте ключ в кэш с ключом, подобным «LoggedInUser-1234», где 1234 - это уникальный идентификатор пользователя. Затем просто установите время ожидания для всего, что вы хотите (5 минут, 10 и т. Д.) И значение true. Затем, при запросе, активен ли пользователь, просто проверьте, содержит ли кэш истинное значение для того же ключа.