70-562: Working with User Profiles

Artykuł pochodzi w serii przygotowań do egzaminu 70-562 ASP.NET.

ASP.NET udostępnia programiście mechanizm profili, który może wykorzystać do przechowywania informacji specyficznych dla poszczególnych użytkowników. Informacje przechowywane mogę być dowolne np. szablon strony, adres zamieszkania lub dowolne dane potrzebne do działania aplikacji. Dane te są przechowywane między kolejnymi wizytami użytkownika na stronie. ASP.NET automatycznie ładuje dane z źródła na podstawie tożsamości użytkownika. W tym artykule zostanie opisana praca z mechanizmem profili ASP.NET.

Aby wykorzystać powyższy mechanizm należy zrobić kilka kroków:

  • Konfiguracja providera, który zostanie wykorzystany przez mechanizm
  • Zdefiniować przechowywane dane
  • Ustawić i zapisać dane w profilu
  • Rozpoznać powracającego użytkownika i wykorzystać dane w profilu

Konfiguracja providera

Domyślnie ASP.NET posiada skonfigurowanego SqlProfileProvidera, który przechowuje dane w lokalnej bazie danych MS Sql Server. Baza ta znajduje się w pliku (ASPNETDB.MDF) i jest w katalogu App_Data. Natomiast domyślna konfiguracja znajduje się w pliku machine.config i wygląda następująco:

   1: <connectionStrings>
   2:     <add name="LocalSqlServer" 
   3:         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
   4:         providerName="System.Data.SqlClient"/>
   5: </connectionStrings>
   1: <profile>
   2:     <providers>
   3:         <add name="AspNetSqlProfileProvider"
   4:             connectionStringName="LocalSqlServer"
   5:             applicationName="/"
   6:             type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
   7:     </providers>
   8: </profile>

W przypadku, gdy programista chce skorzystać z innej bazy musi zmienić connectionStringa, który będzie zawierał informacje o sposobie połączenia z bazą oraz musi wygenerować odpowiednią strukturę danych w bazie. Aby wygenerować odpowiednią strukturę wystarczy skorzystać z narzędzia aspnet_regsql.exe, które znajduje się w katalogu %windows%\Microsoft.NET\Framework\%version%, a jego składania powinna wyglądać mniej więcej tak:

   1: aspnet_regsql.exe -E -S localhost -Ap

Gdzie parametr S oznacza serwer z którym ma się połączyć narzędzie (tutaj localhost), parametr E oznacza, że łącząc się z serwerem ma zostać wykorzystana tożsamość konta Windows oraz parametr –Ap oznacza wygenerowanie tabel potrzebnych do działania mechanizmu profili.

Sama narzędzie aspnet_regsql.exe jest dużo bardziej rozbudowane, ponieważ umożliwia generowanie nie tylko tabel dla profili ale również dla membershipprovidera, roleprovidera oraz web parts.

Definicja danych profilu

Mając już skonfigurowanego providera dla mechanizmu profili, następnym krokiem jest zdefiniowane danych jakie profil będzie mógł przechowywać. Dane definiujemy w pliku konfiguracyjnym web.config. Poniżej znajduje się przykład, który umożliwia przechowywanie imienia, nazwiska oraz datę ostatniej wizyty użytkownika. Jak widać dla danych o typie string nie trzeba podawać typu, ponieważ jest to domyślny typ danych.

   1: <system.web>
   2:     <profile>
   3:         <properties>
   4:             <add name="FirstName"/>
   5:             <add name="LastName"/>
   6:             <add name="LastVisit" type="System.DateTime"/>
   7:         </properties>
   8:     </profile>
   9: </system.web>

Dodatkowo możemy ustawić, że część pól profilu będzie mogła być ustawiana dla użytkowników anonimowych. W tym celu należy przy definicji danego pola dodać atrybut allowAnonymous="true" oraz dodać element <anonymousIdentification enabled="true"/> do system.web. W przypadku nieuwierzytelnionych użytkowników ASP.NET generuje unikalną wartość, która później zapisuje do pliku cookie, na podstawie, której później może zidentyfikować powracającego użytkownika.

Ustawianie i zapisywanie danych w profilu

Ustawianie i zapisywanie danych jest bardzo proste. Programista ma dostęp do właściwości Profile, które jest generowana na podstawie pliku web.config i zawiera wszystkie zdefiniowane tam właściwości. Na koniec po ustawieniu wszystkich właściwości trzeba wywołać metodę Save.

   1: Profile.FirstName = "Daniel";
   2: Profile.LastName = "Plawgo";
   3: Profile.Save();

Odczytywanie danych z profilu

Odczytanie danych jest jeszcze łatwiejsze niż ich zapis. ASP.NET automatycznie ładuje dane użytkownika na podstawie jego tożsamości i już w kodzie aplikacji możemy korzystać z właściwości Profile, która ma ustawione wszystkie właściwości na dane wcześniej zapisane.

   1: FirstNameTextBox.Text = Profile.FirstName;
   2: LastNameTextBox.Text = Profile.LastName;

Tagi: , , , ,

Comments (1) -

Łukasz K.
Łukasz K. Poland
5/10/2010 11:32:29 PM Permalink

Narzędzie 'aspnet_regsql.exe' opisuję trochę szerzej na swojej stronie, także jeśli ktoś jest zainteresowany to zapraszam :)
http://kurzyniec.pl/article/integracja_z_baza_asp.php

Add comment




  Country flag
biuquote
  • Comment
  • Preview
Loading


Eastgroup.pl na facebooku