Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для TurboDuck
50 / 49 / 13
Регистрация: 23.11.2015
Сообщений: 401

Блокировка данных пользователя на форме редактирования

29.11.2019, 06:53. Показов 2058. Ответов 2

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые коллеги

Подскажите, пожалуйста, варианты решения задачи, не могу сообразить. Есть фронт приложение (Vue), на бэке Java. Имеется перечень талонов, задача в том, что бы один пользователь не перезатерал то, что отредактировал другой пользователь, в момент когда вошел редактировать талон. Для этого я блокирую талон, в БД помещаю ID пользователя редактирующего талон, другой пользователь видит, что талон занят тем то.
Когда нажимаешь сохранить или отмена - то ID очищается и талон открыт для других.

Проблема в том, что если пользователь закрыл вкладку браузера или просто закрыл браузер, находясь в этом момент в талоне, то база не очистит ID и как результат накопятся рудиментарные ID блокирующие талоны.
Думал вариант, опрашивать периодически может? Отлавливал событие
JavaScript
1
window.addEventListener('beforeunload', function..)
но оно может не отработать, как показывает практика.

Буду рад за любые предложенные варианты решения задачи.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.11.2019, 06:53
Ответы с готовыми решениями:

Как довести до ума метод редактирования данных пользователя?
public void editUser(int id) throws Exception { PreparedStatement ps = conn.prepareStatement("UPDATE user SET login = ?, password = ?,...

Не работает ввод данных в форме редактирования
Ничего не вводится в формах редактирования, е вводится и не выбирается, не могу понят в чем проблема, подскажите пжлст

Запрет редактирования данных в форме по признаку
Добрый день, подскажите как можно запретить редактирование данных в ворме по признаку? Например есть логическое поле Редактирование галочка...

2
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
29.11.2019, 10:11
Лучший ответ Сообщение было отмечено TurboDuck как решение

Решение

TurboDuck, проблема довольно распространённая. В том же Битриксе при редактировании заказа одним пользователем, он блокируется для остальных с именем пользователя, который данный заказ заблокировал. В случае, если при редактировании заказа была закрыта вкладка или пользователь нажал кнопку "назад" в браузере, заказ так и останется заблокированным на некоторое время.
Как вариант, вы можете заносить в БД время блокировки талона. Пока у пользователя открыта страница с редактированием талона, периодически (например, раз в 30 секунд) отправляете ajax-запрос на сервер, оповещающий сервак, что пользователь ещё тут и редактирует. При обработке данного запроса, обновляйте время блокировки талона.
На стороне сервака талон с id = N считайте заблокированным при двух условиях: 1) если в таблице есть запись о том, что талон N заблокирован; 2) если время его блокировки меньше определённого (например, 5 минут). Как раз на этом этапе (выборки талонов и проверки на заблокированность) вы можете подчищать неактуальные данные.
Таким образом, если пользователь закрыл вкладку браузера, талон разблокируется через 5 минут автоматически.
Вы можете описать дополнительные алгоритмы, которые снимали бы блокировку в некоторых случаях, когда пользователь не завершил редактирование так, как задумывалось, но решить задачу в общем случае вряд ли возможно.
1
 Аватар для TurboDuck
50 / 49 / 13
Регистрация: 23.11.2015
Сообщений: 401
29.11.2019, 12:22  [ТС]
Спасибо за решение и то, что подтвердили мои мысли! Если честно я примерно к такому же решению уже пришел, только время думал больше, отпарвлять раз в 4 минутs в millis и чистить на бэке раз в 10 минут, вычитая из текущего времени в millis время блокировки. Ваш вариант более "живой" если чаще опрашивать. Вопрос только в нагрузке.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.11.2019, 12:22
Помогаю со студенческими работами здесь

Блокировка данных для изменения в форме
Доброго времени суток, друзья! Был ли у кого-то опыт решения такой задачи как? Есть форма, содержащая в себе данные по...

Не заносятся новые данные ComboBox в форме редактирования данных
Есть форма для редактирования данных о сотрудниках. Поля соответственно "ИД сотрудника" (textbox1), "ФИО" (ComboBox2),...

Блокировка клавиши при нажатии в одной форме и блокировка в другой, третьей
Здравствуйте нужно что бы при вызове помощи в 1ом вопросе она блокировалась во 2ом вопросе,подскажите как сделать. Вам нужно...

Добавить на форме редактирования отдельную кнопку для редактирования должностей
Народ нужна помощь кто может добавить на форме редактирования кнопку редактирования должностей отдельную то есть добавление удаление...

Блокировка от редактирования CDR и PSD
Всем привет, графикой давно занимаюсь, работаю с PhotoShop и CorelDraw. Я немного затруднился в одном вопросе. Как заблокировать от...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru