Blokada optymistyczna w aplikacji bezstanowej

0

Cześć!
Chciałbym się dowiedzieć czy jest możliwość utworzenia blokady optymistycznej w aplikacji bezstanowej. Tworzę aplikację opartą o Spring-boot oraz AngularJS, łącząc całość za pomocą RESTa, a jako mechanizm uwierzytelniania wykorzystuję Json Web Token.
Przechodząc do sedna problemu: chciałbym wczytać jakiś obiekt z bazy danych, udostępnić go do edycji na froncie, a następnie zapisać. Próbowałem to zrobić tak, aby przesyłać pole wersji (oznaczone w encji jako @Version) na front, razem z innymi danymi.Jest to jednak słabe rozwiązanie, gdyż wersja jest wtedy podatna na zmianę przez użytkownika.
Czy istnieje zatem jakaś możliwość, bez wykorzystywania komponentów stanowych, aby dokonać blokady optymistycznej?

0

Nie znam się na Angularze ale odpowiem: wyłącz edycję dla pola z wersją ;]

1

No dobra. Jeżeli ten obiekt jest taki ważny to przyszło mi do głowy pewne rozwiązanie: dodaj podpis numeru wersji. A więc do przesyłanej encji dojdą dwa pola: sól oraz hasz(wersja + publiczna sól z pola + prywatna sól z serwera).

2

1

No to może po prostu zamiast wysyłać wersji w czystej postaci, wysyłaj jej hasha, np. SHA256? I gdy wraca, sprawdź czy

hash(entity.version) equals requestObject.hashedVersion

(w odniesieniu do filmu powyżej)

0

Próbowałem zrobić to sposobem zaproponowanym przez @vpiotr, jednak nie udało mi się. Co prawda ETag był generowany przy zapytaniu GET, jednak nie potrafiłem obsłużyć tego przy próbie zapisu - nie mam pojęcia z czego był generowany ten hash.
Rozwiązałem to, tworząc hash MD5 pola wersji, który przesyłam jako ETag. Mam nadzieję, że to będzie wystarczającym rozwiązaniem.
Dzięki wszystkim za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1