Aby dołączyć do schematu naszej bazy tabele oraz funkcjonalność technologii .NET należy skorzystać ze zwykłego wiersza poleceń (przechodzimy do folderu '%system%\Microsoft.NET\Framework\v2.0.50727′) lub posłużyć się Visual Studio Command Prompt. Wpisujemy „aspnet_regsql.exe /?” w celu uzyskania szczegółowych informacji o dostępnych funkcjach. Uruchomienie narzędzia bez parametru włączy tryb graficzny z kreatorem, lecz nie będzie możliwości wyboru jaka funkcjonalność ma zostać dołożona. Poniższy rysunek prezentuje dwie sekcje, z których należy skorzystać do integracji.
Po przeglądzie dostępnych opcji, w ramach tego materiału zostaje dołączona funkcjonalność zarządzania kontami użytkowników oraz ich rolami. Tak więc w konsoli należy wpisać:
aspnet_regsql /S ".\sqlexpress" /E /A mr /d baza
Poniższy rysunek prezentuje komunikat pozytywnej integracji.
W przypadku gdy tabele aspnet nie zawierają wszystkich wymaganych atrybutów dla naszej aplikacji można zastosować dwie możliwości. Pierwsza polega na dołożeniu pól do tabeli aspnet_Users. Tutaj zwrócę uwagę, iż należy je ustawić z właściwością „Allow Nulls”, by w pełni korzystać z funkcjonalności dostarczonej przez technologię .NET. Druga metoda polega na stworzeniu tabeli z wymaganymi atrybutami i połączeniu jej związkiem „1 do 1” z tabelą aspnet_Users. Do tej operacji można użyć narzędzia SQL Server Management Studio. I tak poniższy rysunek prezentuje połączone dwa schematy drugim sposobem w przytoczonym narzędziu.
Zastosowanie w aplikacji ASP.NET
Po integracji dwóch schematów, baza danych jest gotowa do współpracy z aplikacją oraz kontrolkami z zakładki Login. Jednak by aplikację w pełni dostosować do swoich potrzeb oraz wymagań. W tym celu należy w „web.config” zdefiniować własnych providerów – w sekcji „system.web”. To one dostarczają aplikacji informacji o sposobie przechowywania hasła, wymagań co do jego długości lub składu literowego. Definiują również wiele innych aspektów tworzenia kont użytkowników w aplikacji. Więcej informacji na ten temat znajduje się na stronach MSDN. Poniższy kod źródłowy prezentuje przykładowe providery.
<roleManager enabled="true" defaultProvider="RoleProvider"> <providers> <add applicationName="/" connectionStringName="bazaConnectionString" name="RoleProvider" type="System.Web.Security.SqlRoleProvider" /> </providers> </roleManager> <membership defaultProvider="MembershipProvider"> <providers> <add name="MembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="bazaConnectionString" applicationName="/" requiresUniqueEmail="true" enablePasswordReset="true" enablePasswordRetrieval="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="2" requiresQuestionAndAnswer="false" /> </providers> </membership>
Ostatnią rzeczą jaką należy zmienić w pliku web.config jest sposób autentyfikacji. Domyślnie jest ustawiona na „Windows” – należy zmienić na „Forms„. Dodatkowo można wskazać która strona aspx odpowiedzialna będzie za logowanie.
<authentication mode="Forms"> <forms loginUrl="~/LoginPage.aspx" /> </authentication>
Po takich zmianach pliku web.config aplikacja automatycznie zacznie korzystać z tych providerów. I tak choćby za sprawą requiresQuestionAndAnswer=”false” kontrolka CreateUserWizard pozbawiona będzie pól do wpisania pytania i odpowiedzi.
Nie trzeba instalować C++ i 'Visual Studio Command Prompt’. Wystarczy zwykły CMD. Trzeba wejść do katalogu %system%Microsoft.NETFrameworkv2.0.50727 i tam znajdziemy narzędzie aspnet_regsql.exe.
Dzięki za informację, treść zmieniona.