К вашему последнему вопросу, если какая-либо используемая вами среда поддерживает как хранилище на уровне сеанса, так и хранилище на уровне приложения, когда пользователь входит в систему, вы можете сохранить его "logged in-ness" как логическое значение в сеанс и держать список имен пользователей в хранилище приложения. Если пользователь пытается войти в систему и присутствует в хранилище приложения, но не в хранилище сеанса, это повторяющийся вход из другого браузера. Обработка конца сеанса, когда пользователь явно не выходит из системы, является сложной задачей.
Что касается взаимодействия с пользователем, это действительно зависит от вашей цели. В большинстве случаев я ожидал, что смогу запускать параллельные сеансы без проблем, поэтому я могу расстроиться, если не смогу. Другой вариант - сообщить устройству B, что у пользователя уже запущен сеанс, и он должен закрыть сеанс на устройстве A, прежде чем продолжить. Таким образом, если один и тот же пользователь находится на обоих, он имеет максимальный контроль. Если они разные пользователи и устройство А имеет действительную учетную запись, он продолжает работать без перерыва. Если устройство B имеет действительного пользователя, он знает, что его учетная запись была взломана. Вероятно, он виноват в том, что неаккуратный с паролем, и ему нужна дополнительная помощь.