Integracja dowolnej bazy danych z bazą ASP.NET

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.

Konsola

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.

Konsola - wynik

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.

Schemat

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.

Promuj

2 thoughts on “Integracja dowolnej bazy danych z bazą ASP.NET

  1. 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.

Leave a Reply

Your email address will not be published. Required fields are marked *