Membership – wstęp do autoryzacji użytkowników w ASP.net

Membership w ASP.net stanowi zwarte rozwiązanie odpowiedzialne za autoryzację użytkowników w aplikacji internetowej. Dzięki membership w ASP.net nie musimy samodzielnie tworzyć bazy danych użytkowników naszej aplikacji, dbać o jej funkcje, procedury, czy formularze obsługujące autoryzację.

Klasa Membership zapewnia wsparcie wysokopoziomowego API, dzięki czemu jesteśmy w stanie za pomocą jej metod zmienić hasło użytkownika, utworzyć nowe konto, usunąć je z poziomu kodu.

Podczas podstawowych czynności nie musimy wnikać jednak w możliwości udostępniane przez klasę Membership. Środowisko Visual Studio udostępnia programistom zestaw kontrolek umożliwiających wygodne operowanie na procesie autoryzacji użytkowników.

Membership kontrolki autoryzacji

Membership – kontrolki autoryzacji w ASP.net

Konfiguracja Membership w ASP.net

Po utworzeniu nowego projektu za pomocą menu File -> New -> Web Site środowisko Visual Studio automatycznie wygeneruje podstawową stronę master page wraz z kontrolką LoginView, która wyświetla status zalogowanego użytkownika lub treść przeznaczoną dla użytkownika anonimowego.

Ponadto generowany jest również folder Account, który przechowuje wszystkie formularze odpowiedzialne za logowanie, tworzenie nowego konta czy operacje na hasłach.

Membership folder Account

Membership – folder Account

Teoretycznie mamy więc automatycznie wygenerowane całe zaplecze niezbędne do korzystania z membership, poza jednym – bazą danych. Nie jest ona generowana automatycznie, ponieważ membership nie jest wykorzystywane w każdym projekcie, a baza danych zajmuje miejsce oraz wymaga uruchomienia serwera SQL.

Aby poprawnie wygenerować bazę danych musimy sprawdzić, czy mamy uruchomioną usługę serwera SQL. Z Menu Start uruchamiamy Services.msc lub wchodzimy w Panel sterowania -> Narzędzia administracyjne -> Usługi. Koniecznie uruchomiona musi być usługa SQL Server. W oknie Solution Explorer w Visual Studio zaznaczamy nasz projekt i klikamy na ikonę ASP.NET Configuration w górnym wierszu okna Solution Explorer. Po chwili wygenerowana zostanie baza danych ASPNETDB.MDF w folderze App_Data projektu i otwarta strona narzędzia konfiguracyjnego. Od tej pory mamy już pełny dostęp do funkcji membership w ASP.net.

Może zdarzyć się, że panel narzędzia konfiguracyjnego ASP.net odmówi nam utworzenia nowego użytkownika. Zdarzyć się tak może np. podczas konfliktu z konfiguracją serwera baz danych MySQL. Utworzenie konta za pośrednictwem formularza na naszej witrynie powinno jednak udać się bez problemu.

W przypadku braku połączenia z bazą SQL, kiedy nie widzimy połączenia w oknie Server Explorer, należy odświeżyć okno 2-3 razy. U mnie zazwyczaj wymagane są dwa odświeżenia zanim serwer załapie po uruchomieniu Visual Studio. Gdyby to nic nie dało, a usługa serwera jest na pewno uruchomiona (i konfiguracja serwera nie była zmieniana), pomóc może wyczyszczenie folderu serwera SQL w lokalizacji (w przypadku Windows 7) C:\Users\<user_name>\AppData\Local\Microsoft\Microsoft SQL Server Data\SQLEXPRESS lub C:\Documents and Settings\<user_name>\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS.

Kiedy nasze połączenie z bazą danych zostało utworzone prawidłowo, na stronie konfiguracyjnej ASP.net sprawdzić należy w zakładce Security -> Select authentication type czy zaznaczona jest opcja From the internet.

Membership Web Site Administration Tool

Membership, autoryzacja – Web Site Administration Tool

Korzystanie z Membership w ASP.net

Witryna z kursu Master Pages w ASP.net 4.0 uzupełniona o obsługę membership posłuży nam za przykład edukacyjny.

Jedną z najistotniejszych kontrolek udostępnianych przez autoryzację użytkowników membership w ASP.net jest LoginView. Umożliwia ona rozdzielenie treści dostępnej dla poszczególnych grup użytkowników.

Za część witryny dostępną jedynie dla zalogowanych użytkowników przyjmijmy całe lewe menu udostępniane na jednej z Master Pages, Left.master.

Membership LoginView

Membership – LoginView

W kontrolce Content nadal możemy wyświetlić treści dostępne dla ogółu użytkowników. My jednak zarówno menu tak i zawartość kontrolki ContentPlaceHolder uczyniliśmy dostępnymi jedynie dla zalogowanych użytkowników. Definiuje to element LoggedInTemplate kontrolki LoginView. Element AnonymousTemplate odpowiedzialny jest natomiast za wyświetlenie informacji jedynie dla niezalogowanych użytkowników. Informacje dostępne dla ogółu umieszczamy po prostu poza obszarem kontrolki LoginView. Są to proste podstawy adresowania treści dla wyszczególnionej grupy użytkowników.

Podobny mechanizm widzimy na głównej stronie Master Page, Site.master. Odpowiada on za możliwość logowania oraz wylogowania użytkownika. Mamy tam dostępną kontrolkę LoginStatus, która jak się domyślamy wskazuje status aktualnego użytkownika i umożliwia jego wylogowanie.

Z poziomu kodu wykonywalnego mamy dostęp nie tylko do kontrolek, ale również do klasy Membership należącej do przestrzeni nazw System.Web.Security. Ten aspekt zostanie omówiony jednak przy bardziej zaawansowanym projekcie.

Programista powinien zdawać sobie również sprawę z tego, że ASP.net po wygenerowaniu bazy danych sam tworzy z nią powiązanie za pośrednictwem pliku konfiguracyjnego Web.config oraz ustala zasady bezpieczeństwa na podstawie standardowej konfiguracji. Konfiguracja membership w pliku Web.config zostanie poruszona w osobnym kursie. Jest to istotny dział umożliwiający sprecyzowanie minimalnej długości hasła, jego charakterystyki czy też formy jego przechowywania w bazie danych.

Przykładowy projekt pod linkiem: CodeEnclave Wstęp do Membership

Loading Disqus Comments ...
Loading Facebook Comments ...