![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Mamy standardową autoryzację, zalogowanego użytkownika i jest ok. Przychodzi taki moment, że jedna osoba spełnia kilka ról, które się różnią znacząco pod względem zakresu funkcji i dostępu do zasobów. Weźmy za przykład dziennik szkoły gdzie user Jan Kowalski jest skrajnym przypadkiem, że jest nauczycielem wf, uczniem szkoły wieczorowej oraz ma 3jkę dzieci w tym 2 z nich w jednej klasie. Oczywiście wszystko na jednym loginie i haśle.
Jakie mechanizmy, patterny byście użyli dla takiej sytuacji? W jaki sposób przechowywać role, rozróżniać, trzymać w sesji, autoryzować itp? Miałem okazję już wdrażać takich mechanizm, ale chce podejść do tematu na świeżo, bo pozornie prosta sprawa wcale taka nie jest. -------------------- |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nasza aplikacja medyczna gdzie na jednym loginie robię autoryzację, mam na dzień dobry wybór (przymusowy, nie mogę tego obejść) jako kto chcę się zalogować: bioengineer,engineer, guest itp i po wyborze dostaję rozszerzone lub okrojone opcje aplikacji dla konkretnego stanowiska. Proste i do bólu skuteczne.
gino Ten post edytował gino 19.04.2020, 18:00:21 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Bardziej pytam o to, że jak przechowywać i obsłużyć te rolę w backendzie, to czy w interfejsie będzie w górnej belce, czy w widoku powitalnym to akurat ma dla mnie drugorzędne znaczenie.
-------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Będę się trzymał tego programu co używam i jak pisałem podobne projekty ja, jakkolwiek ten program pisali włosi, to pomyślane jest to w miarę logicznie i koncepcje można rozwijać. Po pierwsze rangi użytkowników są z góry określone, czyli istnieje tabela stanowisk pracy z dostępem do modułów które można załadować konkretnemu stanowisku. Po drugie podczas zakładania konta użytkownika trzeba określić do jakiej grupy lub grup pracownika dajemy dostęp. Po zalogowaniu muszę wybrać jako kto będę pracował w danej sesji. Po trzecie zostają załadowane te moduły które przysługują wybranej grupie pracowników. Reasumując mogę pracować jako bio inżynier, lekarz, technik, informatyk itd, zależy ile stanowisk przydzielisz do danego konta.
gino ps. Jak będę w pracy to mogę wrzucić nieoficjalnie klika screen-ów z aplikacji, ale to już bardziej frontend ![]() Ten post edytował gino 20.04.2020, 06:43:02 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Nadal to tylko mówi, że aktualna rola jest wczytana w sesji, nie jest to rozwiązaniem wątpliwości, bo moje rozterki nie dotyczą interfejsu. Nie ma dla mnie technicznej różnicy czy rolę wybieram zaraz po zalogowaniu czy w każdym momencie, bo generowałoby to ten sam efekt w postaci przeładowania systemu.
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 366 Pomógł: 1115 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zazwyczaj są dwie ścieżki do wyboru. Albo robisz zwykłe role, gdzie cała rola ma ustalony dostęp do pewnych fragmentów strony, albo nadajesz dostęp według możliwości wykonywania pewnych operacji (scope oauth najlepszym przykładem). Czasami występuje mix obu.
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 52 Dołączył: 18.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
@markonix, a jak Ty to sobie wyobrażasz, w statycznym bądź co bądź html-u, bo przecież piszesz w sub forum php, przyznane dostępy do modułów aplikacji odbierać i zmieniać bez jego przeładowania? Słowo role to z sql-em mi się od razu kojarzy, gdzie nawet tam nadanie roli dla użytkownika podczas sesji spowoduje, iż będzie on mógł posłużyć się uprawnieniami przydzielonymi danej roli dopiero po przelogowaniu się. Nie ma w php czegoś takiego jak subsesja, chyba, że posiadasz taką w pełni bezpieczną i funkcjonalną bibliotekę, to jak z chęcią kupię ja od Ciebie, aby sobie ułatwić życie i w raz załadowanej aplikacji web-owej bez przeładowania skakać sobie po przyznanych dostępach. Login jest rzeczą świętą i bez ubicia przyznanych funkcjonalności przez wylogowanie się nie przypiszesz w locie innych praw dostępu. Chciałem to pokazać na przykładzie naszej aplikacji, gdzie na jednej bazie danych (gargantuicznej co prawda) pracuje w tej chwili kilkaset ośrodków (nie osób
![]() gino |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 10.06.2024 - 19:00 |