Artykuł pochodzi w serii przygotowań do egzaminu 70-562 ASP.NET.
W dzisiejszym artykule powiemy sobie o używaniu kontrolki logowania, zarządzaniu użytkownikami, informacjami na ich temat oraz o rolach. To wszystko zrealizujemy używając mechanizmu Membership.
Użycie WSAT do konfigurowania zabezpieczeń
Do zarządzania użytkownikami, rolami oraz zabezpieczeniami na naszej stronie możemy użyć wbudowanego narzędzia Web Site Administration Tool (WSAT).
Tworzenie użytkowników
Aby uruchomić WSAT należy wybrać z menu ASP.NET Configuration. Konfiguracje użytkowników znajdziecie w zakładce Security. Najpierw musimy skonfigurować uwierzytelnianie. Mamy do wyboru uwierzytelnianie Windows, Lokalne Active Directory oraz uwierzytelnianie za pomocą formularza. Po wybraniu interesującego nas uwierzytelniania możemy stworzyć użytkownika, zarządzać nim, nadać mu role itp. Poniżej przykład tworzenia nowego usera:
Jeśli wybraliśmy uwierzytelnianie oparte o formularze (Web-based), WSAT automatycznie stworzy lokalną baze i umieści ją w katalogu App_Data (no chyba że chcemy podczepić inną baze np. wygenerowaną tak jak w poprzednim wpisie). Doda również wpis do pliku Web.config, który włącza nasze uwierzytelnianie:
1: <configuration>
2: <system.web>
3: <authentication mode="Forms" />
4: </system.web>
5: </configuration>
Tworzenie ról
Aby włączyć role wystarczy odpalić WSAT i kliknąć w link, który je włącza :) Po włączeniu ról, WSAT doda do Web.Config taki kod:
1: <configuration>
2: <system.web>
3: <roleManager enabled="true" />
4: </system.web>
5: </configuration>
Teraz możemy już tworzyć własne role i przypisywać do nich użytkowników. Robi się to podczas tworzenia nowego użytkownika ew. podczas jego edycji :)
Podobnie działa mechanizm “Acces Rules”, dzięki któremu możemy określić kto ma dostęp do folderu czy pliku. Również wszystko robimy z poziomu WSAT.
Kontrolka Login
Istnieje kilka kontrolek, wbudowanych w ASP .NET, dzięki którym możemy zarządzać logowaniem i informacjami na temat logowania. Dostarczają one interfejs użytkownika i szereg metod pomagających w zarządzaniu informacjami. Poniżej hierarchia:

CreateUserWizard – jest to “kreator”, dzięki któremu stworzymy nowego użytkownika.
Login – kontrolka, dzięki której dajemy użytkownikowi możliwość zalogowania się .
LoginView – kontrolki tej możemy użyć np. do udostępnienia linka, dostępnego dla zalogowanych użytkowików
LoginName – wyświetla bieżącego użytkownika (jeśli jest zalogowany)
PasswordRecovery – pozwala na zresetowanie hasła użytkownika poprzez wysłanie maila bądź odpowiedź na pytanie
ChangePassword – pozwala zmienić bieżące hasło.
Wszystkie kontrolki są bardzo proste w użyciu, więc nie będę opisywał po kolei (tak jak jest to opisane w TK), jak przeciągnąć na formatkę itp :) Myślę że każdy sobie z tym poradzi.
Klasa Membership
Poniżej najważniejsze statyczne metody klasy Membership, dzięki którym możemy ręcznie stworzyć użytkownika, usunąć itp:
CreateUser – dodaje nowego użytkownika do bazy danych.
DeleteUser – usuwa użytkownika z bazy
FindUsersByEmail – metoda wyszukuje użytkownika (z kolekcji użytkowników), do którego pasuje podany mail
FindUsersByName – tak jak wyżej tylko szukanie odbywa się po nazwie.
GeneratePassword – metoda ta tworzy losowe hasło o podanej długości
GetAllUsers – zwraca kolekcję wszystkich użytkowników znajdujących się w bazie
GetNumberOfUsersOnline – metoda zwraca ilość zalogowanych osób
GetUser – zwraca aktualnie zalogowanego użytkownika
GetUserNameByEmail – pobiera nazwę użytkownika na podstawie maila
UpdateUser – aktualizuje informacje o użytkowniku
Klasa Roles
Klasa Roles dostarcza wielu statycznych metod, dzięki którym możemy operować, zarządzać rolami.
AddUserToRole, AddUsersToRole i AddUsersToRoles – dodają użytkownika (użytkowników) do roli (ról)
CreateRole – tworzy nową role
DeleteRole – kasuje role
FindUsersInRole – znajduje użytkowników w podanej roli
GetAllRoles – zwraca wszystkie istniejące role
GetRolesForUser – zwraca role przypisane do podanego użytkownika
IsUserInRole – zwraca true, jeśli użytkownik należy do podanej roli
RemoveUserFromRole, RemoveUsersFromRole, RemoveUserFromRoles, i RemoveUsersFromRoles – usuwa użytkownika z roli
Jeśli np. chcemy przypisać użytkownika do roli, możemy napisać tak: (w tym przykładzie nazwa użytkownika brana jest z kontrolki CreateUserWizard):
1: Roles.AddUserToRole(CreateUserWizard1.UserName, "Users");
To tyle na dziś. W następnym artykule będziecie mogli przeczytać o zabezpieczaniu strony. Zapraszam w imieniu Dawida :)