У меня есть приложение, где пользователи могут отображать и редактировать элементы в моей базе данных через веб-сайт.Теперь, чтобы быть уверенным, что не возникнет никаких проблем, когда два пользователя изменят один и тот же элемент, я бы хотел, чтобы они не делали этого.Это означает, что первый пользователь, имеющий доступ к элементу, может редактировать его, а остальные могут только просматривать элемент.Но, к сожалению, я не имею понятия, как правильно это реализовать.Давайте сначала посмотрим на настройку:
У меня есть контроллер, который может выглядеть следующим образом:
@RestController
@RequestMapping(value="/item")
public class ItemController {
@Autowired
ItemService itemService;
@GetMapping(value="/getItem/{item_id}")
public ResponseEntity getItem(@PathVariable String item_id) {
this.itemService.getItemById(item_id);
return ResponseEntity.ok(HttpStatus.OK);
}
}
Теперь, когда вызывается getItem
, я знаю, что пользователь получил доступ к элементус данным item_id
от внешнего интерфейса.Таким образом, я мог бы просто создать список «заблокированных» элементов в моем Controller
, которые содержат элементы, и проверить, вызван ли метод getItem
: «Если item_id находится в списке, вернуть Access denied
и перенаправить накомпонент "только для просмотра", иначе ok
".Но это, кажется, весьма обходной путь, и я не могу себе представить, что именно так это и должно быть решено.Также мне нужно каким-то образом надежно удалить элементы из списка.
Существует ли шаблон или что-то подобное, показывающее, как это нужно решить?
Я использую Spring-Boot
и Angular 7
, если это поможет.