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