konto usunięte

Temat: [ASP.NET] Początki ..

Witam!

Jestem w trakcie pisania projektu na zaliczenie. Jednak nie mogę sobie poradzić z jedną rzeczą. Mam w bazie danych tabelę z uprawnieniami rolami i użytkownikami, użytkownicy mają nadane pewne uprawnienia, i teraz jak sprawdzać do czego moją dostęp przed wpuszczeniem ich do systemu? Generalnie w pliku web.config mam zdefiniowany "authentication" na "mode=Forms" oraz autoryzację tak aby system nie wpuszczał anonimowych użytkowników. Wpuszczani są tylko użytkownicy którzy zostali uprzednio sprawdzeni w bazie danych ale mają dostęp do całej funkcjonalności systemu. Teraz muszę oprogramować to aby przed wpuszczeniem ich do systemu zostały sprawdzone ich uprawnienia i nie bardzo wiem jak to zrobić, czy moglibyście mnie jakoś nakierować?

z góry dzięki :)

konto usunięte

Temat: [ASP.NET] Początki ..

Np. w kontrolerze możesz posłużyć się rolami

[Authorize(Roles = "Admin,SuperAdmin,Guest")]

public class NameController : Controller
{
....
}
Łukasz Kaszubowski

Łukasz Kaszubowski Student, Wyższa
Szkoła Gospodarki w
Bydgoszczy

Temat: [ASP.NET] Początki ..

Jeśli w przypadku Asp .NET MVC to tak jak pan Bogdan napisał, jeśli w samym Asp. NET to w VS wybierasz Project -> ASP .NET Configuration i tam możesz poprzez parę kliknięć wybrać jacy użytkownicy mają mieć dostęp do określonych podstron :)

konto usunięte

Temat: [ASP.NET] Początki ..

robię w webform :), Łukasz to co napisałeś raczej nie będzie chodziło, bo te tabele z użytkownikami, rolami i uprawnieniami są zrobione przez mnie dlatego muszę sprawdzać w inny sposób ...

konto usunięte

Temat: [ASP.NET] Początki ..

HttpContext ?
Łukasz Kaszubowski

Łukasz Kaszubowski Student, Wyższa
Szkoła Gospodarki w
Bydgoszczy

Temat: [ASP.NET] Początki ..

Może to Ci się przyda, tyle, że tutaj opisane jest na plikach xml, ale to pewnie analogicznie się robi z bazą :)
Paweł Boczula

Paweł Boczula Eagle7 Group -
informatyka z pasją!

Temat: [ASP.NET] Początki ..

Adrian Dymek:
robię w webform :), Łukasz to co napisałeś raczej nie będzie chodziło, bo te tabele z użytkownikami, rolami i uprawnieniami są zrobione przez mnie dlatego muszę sprawdzać w inny sposób ...

... to w zasadzie albo skorzystaj ze struktury bazy, o którą oparte są providery domyślne - najwygodniejsze i najmniej stresujące
... albo zaimplementuj swój MembershipProvider/RoleProvider na swojej strukturze i dalej zgodnie z konfiguracją web.config (wskazać Twoje providery), dalej wołane będą Twoje metody więc to będzie obsłużone ...
... ew. coś w global.asax możesz naścibolić, chociaż nie wiem po co - ale można :) ...
... lub w kontrolce 'login' (bodaże zdarzenie LoggedIn) dopisać swoje sprawdzanie (w sensie uruchomienia swojego zapytania SQL - tak, brzydko i bez separacji, ale zadziała :P ) i odpowiednie przekierowanie.

Tylko właściwie co chcesz zrobić po sprawdzeniu ich "uprawnień" - przekierować, czy zarządzać wyświetlaniem kontrolek w zależności od roli?Paweł Boczula edytował(a) ten post dnia 08.06.12 o godzinie 15:00

konto usunięte

Temat: [ASP.NET] Początki ..

dzięki Panowie i dzięki Łukasz za link dużo mi rozjaśnił. Wiem już jak blokować dostęp do całych folderów i jak poszczególnych stron ale nie bardzo wiem jak blokować dostęp do poszczególnych kontrolek na wybranych formatkach..

Paweł, jakbyś to zrobił? widzę, że domyśliłeś się o co mi chodzi :) jak zastosować blokadę do poszczególnych kontrolek. Kierując się się artykułem, który podał Łukasz mógłbym powielać formatki usuwając z nich niektóre kontrolki i taką formatkę o mniejszej funkcjonalności udostępniać zwykłym użytkownikom ale to jest powielanie kodu..

edit. najlepiej byłoby jak najprostszą metodą, można powiedzieć, że raczkuje ... Adrian Dymek edytował(a) ten post dnia 08.06.12 o godzinie 20:55

Temat: [ASP.NET] Początki ..

Adrian, na Twoje potrzeby ja bym to zrobil tak:

1. Poczytaj o sesjach (ang. Session)
2. Po zalogowaniu użytkownika na podstawie loginu i hasła znajdź numer id użytkowniaka i przepisz go do sesji, więc będzie dostępny z poziomu aplikacji
3. Stwórz metody

CzyUżytkownikJestWgrupieCoMozeCośZrobić() i/lub CzyUzytkowniakMozeToCosZrobic()
{
Na podstawie id użytkownika zapytaj bazy danych czy ten użytkownik jest w grupie i/lub moze coś zrobić
}

4 ) Potem tylko sprawdzasz

if(!CzyUżytkownikWgrupieCoMozeCośZrobić() )
{
Schowaj pole
}

konto usunięte

Temat: [ASP.NET] Początki ..

Adzik, właśnie tak robię ;)
Paweł Boczula

Paweł Boczula Eagle7 Group -
informatyka z pasją!

Temat: [ASP.NET] Początki ..

Paweł, jakbyś to zrobił? widzę, że domyśliłeś się o co mi chodzi :) jak zastosować blokadę do poszczególnych kontrolek. Kierując się się artykułem, który podał Łukasz mógłbym powielać formatki usuwając z nich niektóre kontrolki i taką formatkę o mniejszej funkcjonalności udostępniać zwykłym użytkownikom ale to jest powielanie kodu..

Troszeczkę odpowiem wymijająco, bo temat jest rozwlekły.

Najprościej to "zahardkodować" i pokazywać kontrolkę w zależności od if UserIsInRole. W taki sposób najszybciej stworzysz coś działającego.

Jest tutaj wszakże 'ALE' - taki "dizajn" mocno Cię ogranicza w momencie, w którym będziesz chciał dać użytkownikom możliwość tworzenia własnych ról, lub po prostu umyślisz sobie dodanie roli bo pokazywanie kontrolki uzależniasz od roli, i będziesz musiał każdy if pieczołowicie uzupełnić. Tu się sprawa zagęszcza i można/należy próbować iść w kierunku nakreślonym przez Adriana powyżej (własne metody - czy użytkownik może coś zrobić). Oczywiście pociąga to za sobą nieco większą pracochłonność. potencjalnie powinieneś każdej istotnej metodzie (czy to wręcz kontrolce, czy przyciskowi - do wyboru do koloru) nadać jakieś ID w tabelce i pobawić się tabelkami linkującymi aby stworzyć mapę tego, co komu wolno - niemniej robi się z tego coraz więcej zachodu. Zastanów się, czy aby na pewno potrzebujesz takiej armaty - może polujesz na komara. :)

Inne podejście to stworzenie dedykowanych folderów dla grup użytkowników (wariant UserIsInRole) i tam umieszczać dedykowane strony aspx dla danej grupy - wtedy możesz sprawdzić czy ktoś otwierający daną stronę jest aby na pewno w roli, dla której dany folder jest przeznaczony. Z jednej strony to redundancja, ale tworząc user-controls możesz złagodzić ten efekt.

Możesz sobie ściągnąć kod nopCommerce i go pooglądać - tam mają ekstremalne podejście do user-kontrolek. :)Paweł Boczula edytował(a) ten post dnia 11.06.12 o godzinie 09:17

Następna dyskusja:

Początki ASP.NET




Wyślij zaproszenie do