r3x Temat założony przez niniejszego użytkownika |
Aplikacja z prawami dostępu » 2012-04-20 16:15:59 Witam, chciałbym prosić was o poradę. Jak najlepiej można w C++ zaimplementować następującą funkcjonalność: przy starcie programu pojawia się okno do logowania, logujemy się i wtedy odpowiednio w zależności czy zostaliśmy zalogowani jako np. szef bądź pracownik mamy inne funkcje dostępne w programie ? (Np. szef będzie mógł dodawać do bazy nowych pracowników, natomiast pracownicy będą mieli jedynie dostęp do bieżących zadaniach)
|
|
hincu |
» 2012-04-20 17:08:40 zrob sobie klase user i tam zdefiniuj kilka typow usera, pozniej tylko w switch'u ustawiasz zezwolenia danego usera : P |
|
r3x Temat założony przez niniejszego użytkownika |
» 2012-04-20 17:17:47 Ok, ale o ile dobrze zrozumiałem to później musiałbym przy każdej funkcji sprawdzać czy aktualnie zalogowany użytkownik ma prawo ja uruchomić ? Czy to nie było by mało efektywne ?
|
|
jankowalski25 |
» 2012-04-20 17:26:03 1. Przydział uprawnień. Najpierw przydzielasz użytkownikowi uprawnienia typu: tego możesz używać, a wszystkich innych rzeczy już nie. 2. Wyświetlenie danych. Udostępniasz tylko te dane, do których użytkownik ma uprawnienia. W pozostałych przypadkach wstawiasz komunikat "Odmowa dostępu". Dzięki temu nie musiałbyś przy każdej funkcji sprawdzać czy aktualnie zalogowany użytkownik ma prawo ja uruchomić |
. |
|
akwes |
» 2012-04-20 21:36:01 1. Masz tylko dwie możliwości. Whitelist oraz blacklist.
Whitelist - możesz wszystko co jest na liście, reszty nie. Blacklist - możesz wszystko, poza tym co jest na liście.
2. Wyświetlasz tylko te funkcje, do których ktoś ma dostęp. Zobacz sobie ACL w NTFS, każdy plik pamięta swoje prawa (no dobra, może nie plik ale lista kontrolna ACL). W Linuksie podobna sytuacja, na forach też każdy post ma właściciela, a każdy dział prawa dostępu. |
|
r3x Temat założony przez niniejszego użytkownika |
» 2012-04-21 13:01:11 Dzięki za szybkie odpowiedzi. Jako, że jestem początkujący w tych sprawach prosiłbym o Waszą wyrozumiałość :) A chciałbym to zagadnienie dobrze zrozumieć. Czyli mógłbym zrobić tak, że utworze klasę User, po której będą dziedziczyć np. Boss i Employee. I teraz np. po zalogowaniu system zweryfikuje obiekt. I teraz proponujecie, żeby powiedzmy wszystkie funkcje w oknie były widoczne, ale tylko niektóre aktywne w zależności od user'a, czy żeby dla każdego user'a otwierać inny panel, tak że Employee będzie miał zupełnie inny widok niż Boss po zalogowaniu (to wydaje się bardziej rozsądne) ? Dodam, że to wszystko robię w VS2010 Ultimate, a do interfejsu graficznego używam FLTK. |
|
pekfos |
» 2012-04-23 15:09:12 No nie wiem czy obiekty są tu najlepszym rozwiązaniem. Lepsze raczej jest takie rozwiązanie: unsigned long access_rights = 0;
#define ADMIN_ACCESS (1)
#define EMPLOEE_ACCESS (1<<1)
#define GUEST_ACCESS (1<<2)
#define ALL_ACCESS (ADMIN_ACCESS | EMPLOEE_ACCESS | GUEST_ACCESS)
void AdminujSystemem() { if( access_rights & ADMIN_ACCESS ) { } else printf( "Access denied!\n" ); }
void loguj() { access_rights = baza[ dane_usera ]; } To trochę w stylu C, ale jest to dużo prostsze od klas. |
|
r3x Temat założony przez niniejszego użytkownika |
» 2012-04-23 21:58:55 Super, spróbuję to tak zrobić. Dzięki za pomoc. |
|
« 1 » 2 |