Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Aplikacja z prawami dostępu

Ostatnio zmodyfikowano 2012-04-24 10:51
Autor Wiadomość
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)

P-54891
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
P-54895
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 ?
P-54897
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ć
.
P-54898
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.
P-54916
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.
P-54953
pekfos
» 2012-04-23 15:09:12
No nie wiem czy obiekty są tu najlepszym rozwiązaniem. Lepsze raczej jest takie rozwiązanie:
C/C++
unsigned long access_rights = 0; //Np globalne.

//Tylko przykładowe. może byc tego wiecej. Nie musza oznaczać stanowiska, np uprawnienia do okreslonych akcji.
#define ADMIN_ACCESS (1)
//specyficzne dla admina
#define EMPLOEE_ACCESS (1<<1)
//specyficzne dla pracownika
#define GUEST_ACCESS (1<<2)
//byle co dla gościa

// Do uzycia dla konkretnych userow:
#define ALL_ACCESS (ADMIN_ACCESS | EMPLOEE_ACCESS | GUEST_ACCESS)
//(admin (ALL_ACCESS) może robic wszytko, a pracownik moze robic specyficzne dla niego rzeczy I to co gość)
//itd..

void AdminujSystemem()
{
    if( access_rights & ADMIN_ACCESS ) //czy ustawiony jest bit 1?
    {
        //blabla
    }
    else printf( "Access denied!\n" );
   
}

void loguj()
{
    //pobierz dane od usera
    //szukaj w bazie
    //przypisz uprawnienia
    access_rights = baza[ dane_usera ];
}
To trochę w stylu C, ale jest to dużo prostsze od klas.
P-55057
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.
P-55139
« 1 » 2
  Strona 1 z 2 Następna strona