Autoryzacja w warstwie widoku

0

Witam,

Tworzę aplikację webową i zastanawiam się w jaki sposób zaimplementować dostęp do poszczególnych pól/akcji na podstawie uprawnień jakie posiada aktualnie zalogowany użytkownik. Aktualnie widok mam w stanie 'surowym', czyli osoba, która się zaloguje widzi wszystko i ma dostęp wszystkich funkcji aplikacji.

Use case:
Mam np. formatkę pracownika. Składa się ona z (trochę będę upraszczał) z następujących pól

  • imię i nazwisko
  • Adres
  • Przyznana premia

W systemie istnieją 3 role, pracownik, manager, dział Księgowy:

Pracownik widzi tylko swoje dane adresowe (read/write)
Manager ma dostęp do wszystkiego (read/write)
Dział księgowy ma dostęp do wszystkiego na read.

Widzę 2 rozwiązania:

  • dziedziczyć po każdym widoku i dla każdego profilu stworzyć nowy widok (eksplozja klas)
  • konfigurować wszystko w jednym widoku w zależności od uprawnień (eksplozja if-ów)

Każde z tych rozwiązań ma swoje wady i zalety, może ktoś jest w stanie mi podpowiedzieć w którą stronę najlepiej pójść.

Dana strategia powinna rozwiązać następujące problemy:

  • inna akcja pod linkiem (przyciskiem) w zależności od zalogowanej osoby
  • włączanie i wyłączanie poszczególnych komponentów na stronie w zależności od profilu.

Z dodatkowych informacji to:

  • system piszę w Javie
  • widok jest oparty na apache wicket

Może macie gdzieś jakieś materiały gdzie można poczytać o autoryzacji? Jakieś wzorce, może jakiś sensowny projekt na githubie z którym warto się zaznajomić?

0

Robisz tak, że wstawiasz na jednym widoku niezależnie od tego co kto ma widzieć wsyzstkie kontrolki linki z różnymi akcjami itd itp słowem całe gui, a później określasz które komponenty mają być wyświetlane za pomocą właściwości "rendered". Jeżeli rendered=true kontrolka się wyświetli (label, commandButton, cokolwiek). w rendered oczywiście wstawiasz EL który Ci sprawdza odpowiednie uprawnienia w odpowiedzialnym za to BackBeanie. Izi!

0

@Antoniossss czy ja wiem? Upiszesz się przy tym jak głupi... Zwykle takie zabezpieczenia robi się za pomocą Filtrów servletowych.

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