Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Subsesje, multirole, Koncepcyjnie
markonix
post 17.04.2020, 17:28:09
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.


--------------------
Go to the top of the page
+Quote Post
gino
post 19.04.2020, 17:59:43
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
Go to the top of the page
+Quote Post
markonix
post 19.04.2020, 22:01:25
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.


--------------------
Go to the top of the page
+Quote Post
gino
post 20.04.2020, 05:57:50
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 smile.gif

Ten post edytował gino 20.04.2020, 06:43:02
Go to the top of the page
+Quote Post
markonix
post 20.04.2020, 20:24:14
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.


--------------------
Go to the top of the page
+Quote Post
viking
post 21.04.2020, 06:32:30
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.


--------------------
Go to the top of the page
+Quote Post
gino
post 21.04.2020, 06:55:32
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 exclamation.gif, ośrodków)w Europie i to w jednej chwili razy powiedzmy 10 osób co daje około 3-3.5 tyś użytkowników (strzelam, bo może jest ich więcej) i jakoś zmiana dostępów przez przeładowanie aplikacji i powtórne zalogowanie nie powoduje problemów ani epilepsji u użytkowników, że już o obciążeniu serwera i jego zasobów nie wspomnę. A Ty się kilkunastoma osobami-użytkownikami będziesz przejmował.

gino
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 10.06.2024 - 19:00