Wpis z mikrobloga

W ramach projektu na studia tworzymy aplikację X, w której będą różne typy użytkowników, i w zależności od typu użytkownicy będą mieli różne uprawnienia dostępu do funkcjonalności aplikacji. Chcemy zaimplementować RBAC, rozkład tabel by wyglądał mniej więcej tak: USER<==ROLE==>ROLE_TASK<==TASK.
I teraz pojawiają się pytania na które nie znam do końca odpowiedzi:
Czy tak to się robi? W sensie zapisuje uprawnienia użytkowników w bazie i później w celu weryfikacji czyta dane z bazy?
Czy bardziej robi się to po stronie kodu?
Niektórzy od nas argumentują, że czytanie za każdym razem z bazy może być kosztowne i dlatego żeby to robić w kodzie.
A wg. mojego małego researchu zapisanie tego w bazie sprawia, że system staje się elastyczny bo wystarczy dodać raz w bazie i wszystko będzie śmigać bez zmiany kodu.
Bedziemy korzystać ze springa do backendu, tylko dopiero się go uczymy więc za bardzo nie wiemy czy są tam jakieś mechanizmy to obsługujące xd
plz halp

#bazydanych
#programowanie #java
  • 6
@kupiec_korzenny: Uprawnienia w kodzie ?
Jak nikt nigdy nie będzie zmieniał uprawnień, to super fajne.
Ale jak chcesz zarządzać tymi uprawnieniami w kodzie ? Dopisywać ify i elsy na produkcji ? :-)

Pod sumując - uprawnienia tylko w bazie i do tego mechanizm w aplikacji ułatwiający ich zmianę.

Dla bazy danych nie jest problemem zwracanie zestawu uprawnień podczas logowania, więc rozważcie przechowywanie uprawnień wraz z sesją, aby nie odpytywać w czasie
@kupiec_korzenny: Możecie użyc spring security.
Ostatnio rolami sie bawiłem rok temu wiec moge nie pamietac xd Robilem to tak ze mialem USER- many:many-ROLE. Podczas wczytywania usera ustawiaja mu sie granted authorities.
W security mozesz sobie ustawić która rola co może robic, np. regularclient może get, staffworker może get/write.
JavaBrains ma spoko playliste o security, te pierwsze kilka filmikow wam styknie. A jak chcecie bardziej in-depth to amigoscode jest idealne.