Konfiguracja witryny internetowej ASPNET,
zarządzanie dostawcami i parametrami

 

 

 

Cele ćwiczenia

 

 

Konfiguracja dostawców użytkowników i ról

 

Na listingu 1 przedstawiono uproszczony fragment kodu pochodzącego z pliku machine.config zawierający konfigurację domyślnych dostawców użytkowników AspNetSqlMembershipProvider i ról AspNetSqlRoleProvider.

 

Listing 1. Kod dodania domyślnego dostawcy użytkowników AspNetSqlMembershipProvider i ról AspNetSqlRoleProvider pochodzący z pliku machine.config

 

<system.web>

      <membership>

            <providers>

<add name="AspNetSqlMembershipProvider"

type="System.Web.Security.SqlMembershipProvider"

connectionStringName="LocalSqlServer"

enablePasswordRetrieval="false"

enablePasswordReset="true"

requiresQuestionAndAnswer="true"

applicationName="/"

requiresUniqueEmail="false"

passwordFormat="Hashed"

maxInvalidPasswordAttempts="5"

minRequiredPasswordLength="7"

minRequiredNonalphanumericCharacters="1"

passwordAttemptWindow="10"

passwordStrengthRegularExpression=""/>

            </providers>

      </membership>

      <roleManager>

            <providers>

<add name="AspNetSqlRoleProvider"

connectionStringName="LocalSqlServer"

applicationName="/"

type="System.Web.Security.SqlRoleProvider"/>

            </providers>

      </roleManager>

</system.web>

 

Zmiany parametrów dostawców domyślnych można dokonać redefiniując domyślnych dostawców w lokalnych plikach web.config. Kod redefinicji maże bazować na listingu 1 z uwzględnieniem konieczności usunięcie dostawcy zdefiniowanego w nadrzędnym pliku konfiguracyjnym, poleceniem <clear /> lub <remove name= "AspNetSqlMembershipProvider"/>. Polecenia <clear /> i <remove /> należy umieścić bezpośrednio przed znacznikiem <add />.

 

Znaczenie i domyślne wartości atrybutów dostawcy członkowstwa:

 

Polecenia

 

  1. Utwórz nową witrynę w lokalnym systemie plików.
  2. Bazując na listingu 1 dokonaj redefinicji domyślnego dostawcy użytkowników i ról.
  3. Przy pomocy Web Site Administration Tool utwórz nowego użytkownika.
  4. Dodaj stronę rejestracja.aspx umieść na niej kontrolkę CreateUserWizard , uruchom stronę i utwórz nowego użytkownika.
  5. Zmień wartość atrybutu requiresQuestionAndAnswer z true na false i ponownie utwórz użytkownika przy pomocy Web Site Administration Tool i strony rejestracja.aspx, zaobserwuj zmianę wyglądu kontrolek.
  6. Zmień inne atrybuty domyślnego dostawcy użytkowników i przetestuj wpływ zmian na działanie aplikacji.
  7. Dodaj do aplikacji strony odzyskiwania i zmiany hasła, odpowiednio skonfiguruj dostawcę. Do odzyskiwania hasła należy skonfigurować ustawienia SMTP poczty e-mail przy pomocy Web Site Administration Tool.
  8. Przetestuj działanie stron zmiany i odzyskiwania hasła.
  9. Zmień nazwę aplikacji i sprawdź, przy pomocy Web Site Administration Tool, istniejących użytkowników, dodaj nowych.
  10. Wróć do starej nazwy aplikacji i ponownie sprawdź użytkowników.
  11. Przetestuj blokowanie konta po przekroczeniu maksymalnej liczby nieudanych logowań, wykonanie polecenia wymaga dodania do aplikacji strony logowania.
  12. Odblokuj konto dokonując zmiany w bazie danych i sprawdź skuteczność odblokowania konta poprzez ponowne zalogowanie.

 

Dodanie do aplikacji nowych dostawców użytkowników i ról

 

  1. Dodaj do pliku web.config w sekcji <system.web> nowego dostawcę użytkowników o nazwie użytkownicy (skorzystaj z listingu 1).
  2. Dodaj do pliku web.config w sekcji <system.web> nowego dostawcę ról o nazwie role.
  3. Dodaj do pliku web.config łańcuch połączenia wskazujący bazę użytkowników na lokalnym serwerze MS SQL Server Express Edition lub serwerze, którego dane poda prowadzący zajęcia.
  4. Skonfiguruj dostawców tak, aby korzystali z utworzonego w powyższym punkcie łańcucha połączenia.
  5. Przy pomocy Web Site Administration Tool zmień domyślnych dostawców użytkowników i ról na nowo utworzonych.
  6. Przy pomocy Web Site Administration Tool znajdź istniejących użytkowników, utwórz nowych.
  7. Edytuj plik web.config i znajdź sposób w jaki zostali wskazani domyślni dostawcy.

 

Programowy odczyt parametrów konfiguracji dostawców użytkowników

 

  1. Dodaj do aplikacji nową stronę, która odczyta i umieści w okienku tekstowym treść sekcji konfiguracji <membership> .

 

Listing 2. Kod odczytu treści sekcji <membership>  z pliku konfiguracyjnego aplikacji

 

Configuration Konfigurator;

System.Web.Configuration.MembershipSection dostawcy;

Konfigurator = WebConfigurationManager.OpenWebConfiguration(@"~");

// 1 sposób adresowania sekcji

dostawcy = (MembershipSection)Konfigurator.GetSection("system.web/membership");

// 2 sposób adresowania sekcji

dostawcy = (MembershipSection)Konfigurator.SectionGroups["system.web"].Sections["membership"];

string tekstSekcji = dostawcy.SectionInformation.GetRawXml();

TextBox1.Text = tekstSekcji;

 

  1. Dodaj do strony listę skonfigurowanych dostawców odczytaną z obiektu dostawcy.
  2. Dodaj do strony informację o domyślnym dostawcy odczytaną z obiektu dostawcy.
  3. Dodaj do strony możliwość rekonfiguracji sekcji
    1. poprzez zmianę treści sekcji w okienku tekstowym i
    2. poprzez zmianę właściwości obiektu dostawcy.
  4. Przetestuj wszystkie elementy strony.

 

Przydatne instrukcje Konfigurator.Save(), SetRawXml().

Programowy odczyt parametrów konfiguracji

 

  1. Dodaj do aplikacji co najmniej dwa parametry (ustawienia) przy pomocy Web Site Administration Tool.
  2. Dodaj do aplikacji co najmniej dwa łańcuchy połączeń.
  3. Znajdź wprowadzone zmiany w pliku web.config.
  4. Dodaj do aplikacji stronę, na której umieszczone zostaną informacje o konfiguracji, pomocny może być listing 3.

 

Kod z listingu 3

·         umieszcza w etykiecie Label1 parametry (ustawienia) aplikacji, korzystając z klasy ConfigurationManager,

·         tworzy obiekt x klasy WebConfigurationManager otwierający plik konfiguracyjny z katalogu wirtualnego „~” ,

·         umieszcza w etykiecie Label6 fizyczną ścieżkę pliku konfiguracyjnego,

·         umieszcza w etykiecie Label2 parametry (ustawienia) aplikacji znajdujące się w otwartym przez obiekt x pliku konfiguracyjnym i w plikach nadrzędnych,

·         umieszcza w etykiecie Label3 łańcuchy połączeń znajdujące się w otwartym przez obiekt x pliku konfiguracyjnym iw plikach nadrzędnych,

·         umieszcza w etykiecie Label4 nazwy wszystkich sekcji konfiguracji,

·         umieszcza w etykiecie Label5 zawartość grup sekcji.

 

Listing 3. Kod umieszczający w etykietach informację o konfiguracji aplikacji (witryny) i sekcjach

 

Label1.Text = "<h3>Aplication settings</h3>";

for (int i = 0; i < ConfigurationManager.AppSettings.Count; i++)

{

    Label1.Text += ConfigurationManager.AppSettings.GetKey(i) + " = ";

    Label1.Text += ConfigurationManager.AppSettings[i] + "<br />";

}

 

Configuration x = WebConfigurationManager.OpenWebConfiguration(@"~"); // aplikacji

// Configuration x = WebConfigurationManager.OpenWebConfiguration(@"\"); // serwera

// Configuration x = WebConfigurationManager.OpenWebConfiguration(@"~\.."); // nadrzędny

 

Label6.Text = x.FilePath;

 

string[] klucze = x.AppSettings.Settings.AllKeys;

Label2.Text = "<h3>Aplication settings</h3>";

for (int i = 0; i < x.AppSettings.Settings.Count; i++)

{

    Label2.Text += x.AppSettings.Settings[klucze[i]].Key.ToString() + " = ";

    Label2.Text += x.AppSettings.Settings[klucze[i]].Value.ToString() + "<br />";

}

Label3.Text = "<h3>Łańcuchy połączeń</h3>";

for (int i = 0; i < x.ConnectionStrings.ConnectionStrings.Count; i++)

{

    Label3.Text += x.ConnectionStrings.ConnectionStrings[i].Name + " = ";

    Label3.Text += x.ConnectionStrings.ConnectionStrings[i].ConnectionString + "<br />";

}

Label4.Text = "<h3>Sekcje</h3>";

for (int i = 0; i < x.Sections.Count; i++)

    Label4.Text += x.Sections[i].SectionInformation.Name.ToString() + "<br />";

 

Label5.Text = "<h3>Grupy sekcji</h3>";

for (int i = 0; i < x.SectionGroups.Count; i++)

{

    Label5.Text +="<h3>" + x.SectionGroups[i].SectionGroupName + "</h3>";

    for (int k = 0; k < x.SectionGroups[i].Sections.Count; k++)

        Label5.Text += x.SectionGroups[i].Sections[k].SectionInformation.Name.ToString() + "<br />";

}

 

  1. Przetestuj działanie strony, znajdź wprowadzone przez siebie parametry.

 

Programowa zmiana konfiguracji i pliku web.config

 

  1. Do dowolnej strony dodaj przycisk, którego kliknięcie spowoduje
    1. wydruk dowolnego parametru (ustawienia) aplikacji,
    2. dodanie dwóch parametrów (ustawień) aplikacji parametr1 i parametr2,
    3. wydruk adresu pliku konfiguracyjnego,
    4. zapisanie zmienionej konfiguracji w pliku konfiguracyjnym,
    5. zapisanie kopi pliku konfiguracyjnego w katalogu głównym aplikacji pod nazwą test.txt.
  2. Do dokonania zmian należy się posłużyć obiektem klasy WebConfigurationManager – listing 4.

 

Listing 4. Kod zmieniający konfigurację i zapisujący zmiany w pliku konfiguracyjnym i pliku test.txt

 

Configuration x = WebConfigurationManager.OpenWebConfiguration("~");

if(x.AppSettings.Settings["parametr1"]!=null)

    Label1.Text = x.AppSettings.Settings["parametr1"].Value.ToString();

x.AppSettings.Settings.Add("parametr1", "Par 1");

x.AppSettings.Settings.Add("parametr2", "Par 2");

x.AppSettings.Settings["parametr1"].Value = "Ala ma kota";

Label2.Text = "plik konfiguracyjny = " + x.FilePath;

x.Save();

x.SaveAs(Request.PhysicalApplicationPath + @"~\test.txt");

 

  1. Znajdź wprowadzone zmiany w pliku web.config.
  2. Znajdź i edytuj plik test.txt.