Własna baza danych oraz ASP .NET Membership

Domyślnie dane o użytkownikach przetrzymywane się w osobnej bazie danych aspnetdb (SQL Server Express). Czasami jednak warto aby wpisy o użytkownikach były zapisywane w naszej bazie danych. Wyobraźmy sobie portal społecznościowy, w którym użytkownicy mogą umieszczać zdjęcia. W takim przypadku w bazie danych z pewnością będzie tabela łącząca wysłane fotografie z użytkownikami. Jeśli użytkownicy są w jednej bazie danych mamy łatwą kontrolę nad relacjami – wystarczy użyć klucza obcego wskazującego na klucz główny użytkownika. Ponadto często hosting ASP .NET nie wspiera lokalnych baz aspnetdb i jedynym sposobem jest umieszczenie danych membership w głównej bazie:

  1. Pierwszym krokiem jest wygenerowanie odpowiednich tabel oraz procedur (tych, które znajdują się w aspnetdb). Służy do tego narzędzie Aspnet_regsql.exe, które możecie znaleźć w katalogu c :\%windir%\Microsoft.NET\Framework\<versionNumber>. Po odpaleniu programu należy wskazać docelową bazę danych, typ uwierzytelnia itp. Kreator większość zrobi za nas – na koniec tego etapu struktura bazy danych powinna zostać wygenerowana.

    image

  2. W celu upewnienia się, można otworzyć bazę danych i obejrzeć jej strukturę. Widać, że zostały wygenerowane tabele:

    image

    1. Kolejnym krokiem jest dodanie odpowiedniego connectionString’a w pliku web.config:

      <connectionStrings>
          <add name="MembershipTestDB" connectionString="Data Source=PIOTR-PC;Initial Catalog=MembershipTest;Integrated Security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
      </connectionStrings>
      

    2. Mamy już skonfigurowaną bazę danych. Pozostało już tylko skonfigurować aplikację tak aby korzystała z tej bazy danych:
      <membership>
              <providers>
                  <clear/>
                  <add name="AspNetSqlMembershipProvider" 
                      connectionStringName="MembershipTestDB" 
                      applicationName="/"
      type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
              </providers>
          </membership>
      
      <roleManager enabled="true">
        <providers>
          <clear/>
          <add name="AspNetSqlRoleProvider"
              connectionStringName="MembershipTestDB"
              applicationName="/"
              type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        </providers>
      </roleManager>
      
      

    4 thoughts on “Własna baza danych oraz ASP .NET Membership”

    1. Lipa tylko że interfejs graficzny nie udostępnia możliwości wyboru jakie funkcjonalności mają być dodane – przykładowo nie chciałbym tabel związanych z personalizacją.

    2. Tabele to łatwo usunąć samemu – gorzej z procedurami bo jest ich cała masa 🙂

    Leave a Reply

    Your email address will not be published.