Udostępnij za pośrednictwem


Objaśnienie usług uwierzytelniania i profilów ASP.NET AJAX

Autor: Scott Cate

Usługa uwierzytelniania umożliwia użytkownikom podanie poświadczeń w celu otrzymania pliku cookie uwierzytelniania i jest usługą bramy, aby zezwolić na niestandardowe profile użytkowników udostępniane przez ASP.NET. Korzystanie z usługi uwierzytelniania ASP.NET AJAX jest zgodne ze standardowym uwierzytelnianiem ASP.NET Forms, więc aplikacje korzystające obecnie z uwierzytelniania formularzy (na przykład z kontrolką Logowania) nie zostaną przerwane przez uaktualnienie do usługi uwierzytelniania AJAX.

Wprowadzenie

W ramach .NET Framework 3.5 firma Microsoft dostarcza sporą aktualizację środowiska; nie tylko jest dostępne nowe środowisko programistyczne, ale nowe funkcje Language-Integrated Query (LINQ) i inne ulepszenia języka. Ponadto niektóre znane funkcje innych zestawów narzędzi, zwłaszcza ASP.NET rozszerzenia AJAX, są uwzględniane jako członkowie pierwszej klasy biblioteki klas podstawowych .NET Framework. Rozszerzenia te umożliwiają wiele nowych zaawansowanych funkcji klienta, w tym częściowe renderowanie stron bez konieczności odświeżania pełnej strony, możliwość uzyskiwania dostępu do usług sieci Web za pośrednictwem skryptu klienta (w tym interfejsu API profilowania ASP.NET) oraz rozbudowanego interfejsu API po stronie klienta zaprojektowanego do dublowania wielu schematów sterowania widocznych w zestawie kontroli po stronie serwera ASP.NET.

Ten oficjalny dokument analizuje implementację i korzystanie z usług profilowania i uwierzytelniania formularzy ASP.NET, ponieważ są one udostępniane przez rozszerzenia microsoft ASP.NET AJAX Rozszerzenia AJAX Rozszerzenia AJAX sprawiają, że uwierzytelnianie formularzy jest niezwykle łatwe do obsługi, ponieważ (a także usługa profilowania) jest uwidoczniona za pośrednictwem skryptu serwera proxy usługi sieci Web. Rozszerzenia AJAX obsługują również uwierzytelnianie niestandardowe za pomocą klasy AuthenticationServiceManager.

Ten oficjalny dokument jest oparty na wersji Beta 2 programu Visual Studio 2008 i .NET Framework 3.5. W tym oficjalnym dokumencie założono również, że będziesz pracować z programem Visual Studio 2008 Beta 2, a nie Visual Web Developer Express, i udostępnisz przewodniki zgodnie z interfejsem użytkownika programu Visual Studio. Niektóre przykłady kodu mogą korzystać z szablonów projektów niedostępnych w programie Visual Web Developer Express.

Profile i uwierzytelnianie

Profile i usługi uwierzytelniania firmy Microsoft ASP.NET są udostępniane przez system uwierzytelniania formularzy ASP.NET i są standardowymi składnikami ASP.NET. Rozszerzenia AJAX ASP.NET zapewniają dostęp do tych usług za pośrednictwem serwerów proxy skryptów za pośrednictwem dość prostego modelu w przestrzeni nazw Sys.Services biblioteki AJAX klienta.

Usługa uwierzytelniania umożliwia użytkownikom podanie poświadczeń w celu otrzymania pliku cookie uwierzytelniania i jest usługą bramy, aby zezwolić na niestandardowe profile użytkowników udostępniane przez ASP.NET. Korzystanie z usługi uwierzytelniania ASP.NET AJAX jest zgodne ze standardowym uwierzytelnianiem ASP.NET Forms, więc aplikacje korzystające obecnie z uwierzytelniania formularzy (na przykład z kontrolką Logowania) nie zostaną przerwane przez uaktualnienie do usługi uwierzytelniania AJAX.

Usługa Profil umożliwia automatyczną integrację i przechowywanie danych użytkownika na podstawie członkostwa udostępnianego przez usługę uwierzytelniania. Przechowywane dane są określane przez plik web.config, a różni dostawcy usług profilowania obsługują zarządzanie danymi. Podobnie jak w przypadku usługi Uwierzytelniania, usługa profilu AJAX jest zgodna ze standardową usługą profilu ASP.NET, dzięki czemu strony, które obecnie zawierają funkcje usługi profilu ASP.NET, nie powinny być uszkodzone przez włączenie obsługi AJAX.

Włączenie samych usług uwierzytelniania i profilowania ASP.NET do aplikacji wykracza poza zakres tego oficjalnego uwierzytelniania. Aby uzyskać więcej informacji na temat tego tematu, zobacz artykuł Dokumentacja biblioteki MSDN Zarządzanie użytkownikami przy użyciu członkostwa na stronie https://msdn.microsoft.com/library/tw292whz.aspx. ASP.NET zawiera również narzędzie do automatycznego konfigurowania członkostwa przy użyciu SQL Server, który jest domyślnym dostawcą usługi uwierzytelniania dla członkostwa ASP.NET. Aby uzyskać więcej informacji, zobacz artykuł ASP.NET SQL Server Registration Tool (Aspnet_regsql.exe) pod adresem https://msdn.microsoft.com/library/ms229862(vs.80).aspx.

Korzystanie z usługi uwierzytelniania ASP.NET AJAX

Usługa uwierzytelniania ASP.NET AJAX musi być włączona w pliku web.config:

<system.web.extensions> 
 <scripting>
 <webServices>
 <authenticationService enabled="true" /> 
 </webServices>
 </scripting> 
</system.web.extensions>

Usługa uwierzytelniania wymaga włączenia uwierzytelniania ASP.NET Forms i wymaga włączenia plików cookie w przeglądarce klienta (skrypt nie może włączyć sesji bez plików cookie, ponieważ sesje bez plików cookie wymagają parametrów adresu URL).

Po włączeniu i skonfigurowaniu usługi UWIERZYTELNIANIA AJAX skrypt klienta może natychmiast skorzystać z obiektu Sys.Services.AuthenticationService. Przede wszystkim skrypt klienta będzie chciał korzystać z login metody i isLoggedIn właściwości. Istnieje kilka właściwości, aby podać wartości domyślne metody logowania, która może akceptować dużą liczbę parametrów.

Elementy członkowskie Sys.Services.AuthenticationService

metoda logowania:

Metoda login() rozpoczyna żądanie uwierzytelnienia poświadczeń użytkownika. Ta metoda jest asynchroniczna i nie blokuje wykonywania.

Parametry:

Nazwa parametru Znaczenie
userName Wymagane. Nazwa użytkownika do uwierzytelnienia.
hasło Opcjonalnie (domyślnie ma wartość null). Hasło użytkownika.
Ispersistent Opcjonalnie (wartość domyślna to false). Czy plik cookie uwierzytelniania użytkownika powinien być utrwalany w różnych sesjach. Jeśli wartość false, użytkownik wyloguje się, gdy przeglądarka zostanie zamknięta lub sesja wygaśnie.
redirectUrl Opcjonalnie (domyślnie ma wartość null). Adres URL umożliwiający przekierowanie przeglądarki do adresu po pomyślnym uwierzytelnieniu. Jeśli ten parametr ma wartość null lub pusty ciąg, nie nastąpi przekierowanie.
customInfo Opcjonalnie (domyślnie ma wartość null). Ten parametr jest obecnie nieużywany i jest zarezerwowany do użycia w przyszłości.
loginCompletedCallback Opcjonalnie (domyślnie ma wartość null). Funkcja do wywołania po pomyślnym zakończeniu logowania. Jeśli zostanie określony, ten parametr zastępuje właściwość defaultLoginCompleted.
failedCallback Opcjonalnie (domyślnie ma wartość null). Funkcja do wywołania, gdy logowanie nie powiodło się. Jeśli zostanie określony, ten parametr zastępuje właściwość defaultFailedCallback.
Usercontext Opcjonalnie (domyślnie ma wartość null). Niestandardowe dane kontekstowe użytkownika, które powinny zostać przekazane do funkcji wywołania zwrotnego.

Wartość zwracana:

Ta funkcja nie zawiera wartości zwracanej. Jednak po zakończeniu wywołania tej funkcji uwzględnia się wiele zachowań:

  • Bieżąca strona zostanie odświeżona lub zostanie zmieniona, jeśli redirectUrl parametr nie ma wartości null ani pustego ciągu.
  • Jeśli jednak parametr miał wartość null lub pusty ciąg, loginCompletedCallback wywoływana jest parametr lub defaultLoginCompletedCallback właściwość.
  • Jeśli wywołanie usługi internetowej zakończy się niepowodzeniem, failedCallback wywoływany jest parametr defaultFailedCallback właściwości.

metoda wylogowywanie:

Metoda logout() usuwa plik cookie poświadczeń i wyloguje bieżącego użytkownika z aplikacji internetowej.

Parametry:

Nazwa parametru Znaczenie
redirectUrl Opcjonalnie (domyślnie ma wartość null). Adres URL umożliwiający przekierowanie przeglądarki do adresu po pomyślnym uwierzytelnieniu. Jeśli ten parametr ma wartość null lub pusty ciąg, nie nastąpi przekierowanie.
logoutCompletedCallback Opcjonalnie (domyślnie ma wartość null). Funkcja do wywołania po pomyślnym zakończeniu wylogowania. Jeśli zostanie określony, ten parametr zastępuje właściwość defaultLogoutCompleted.
failedCallback Opcjonalnie (domyślnie ma wartość null). Funkcja do wywołania, gdy logowanie nie powiodło się. Jeśli zostanie określony, ten parametr zastępuje właściwość defaultFailedCallback.
Usercontext Opcjonalnie (domyślnie ma wartość null). Niestandardowe dane kontekstowe użytkownika, które powinny zostać przekazane do funkcji wywołania zwrotnego.

Wartość zwracana:

Ta funkcja nie zawiera wartości zwracanej. Jednak po zakończeniu wywołania tej funkcji uwzględnia się wiele zachowań:

  • Bieżąca strona zostanie odświeżona lub zostanie zmieniona, jeśli redirectUrl parametr nie ma wartości null ani pustego ciągu.
  • Jeśli jednak parametr miał wartość null lub pusty ciąg, logoutCompletedCallback wywoływana jest parametr lub defaultLogoutCompletedCallback właściwość.
  • Jeśli wywołanie usługi internetowej zakończy się niepowodzeniem, failedCallback wywoływany jest parametr defaultFailedCallback właściwości.

defaultFailedCallback, właściwość (get, set):

Ta właściwość określa funkcję, którą należy wywołać, jeśli wystąpi błąd komunikacji z usługą internetową. Powinien otrzymać delegata (lub odwołanie do funkcji).

Odwołanie do funkcji określone przez tę właściwość powinno mieć następujący podpis:

function AuthenticationFailureCallback(error, userContext, methodName);

Parametry:

Nazwa parametru Znaczenie
error Określa informacje o błędzie.
Usercontext Określa informacje kontekstowe użytkownika podane podczas wywoływanej funkcji logowania lub wylogowywanie.
Methodname Nazwa metody wywołującej.

defaultLoginCompletedCallback, właściwość (get, set):

Ta właściwość określa funkcję, którą należy wywołać po zakończeniu wywołania usługi internetowej logowania. Powinien otrzymać delegata (lub odwołanie do funkcji).

Odwołanie do funkcji określone przez tę właściwość powinno mieć następujący podpis:

function AuthenticationLoginCompletedCallback(validCredentials, userContext, methodName);

Parametry:

Nazwa parametru Znaczenie
validCredentials Określa, czy użytkownik podał prawidłowe poświadczenia. true jeśli użytkownik pomyślnie się zalogował; w przeciwnym razie false.
Usercontext Określa informacje kontekstowe użytkownika podane podczas wywoływanej funkcji logowania.
Methodname Nazwa metody wywołującej.

defaultLogoutCompletedCallback, właściwość (get, set):

Ta właściwość określa funkcję, którą należy wywołać po zakończeniu wylogowywanie wywołania usługi sieci Web. Powinien otrzymać delegata (lub odwołanie do funkcji).

Odwołanie do funkcji określone przez tę właściwość powinno mieć następujący podpis:

function AuthenticationLogoutCompletedCallback(result, userContext, methodName);

Parametry:

Nazwa parametru Znaczenie
result Ten parametr będzie zawsze ; nulljest zarezerwowany do użycia w przyszłości.
Usercontext Określa informacje kontekstowe użytkownika podane podczas wywoływanej funkcji logowania.
Methodname Nazwa metody wywołującej.

isLoggedIn, właściwość (get):

Ta właściwość pobiera bieżący stan uwierzytelniania użytkownika; jest ustawiany przez obiekt ScriptManager podczas żądania strony.

Ta właściwość zwraca wartość true , jeśli użytkownik jest obecnie zalogowany. W przeciwnym razie zwraca wartość false.

path, property (get, set):

Ta właściwość programowo określa lokalizację usługi sieci Web uwierzytelniania. Można go użyć do zastąpienia domyślnego dostawcy uwierzytelniania, a także jednego ustawionego deklaratywnie we właściwości Path w węźle podrzędnym AuthenticationService kontrolki ScriptManager (aby uzyskać więcej informacji, zobacz temat Using a Custom Authentication Service Provider (Używanie niestandardowego dostawcy usług uwierzytelniania poniżej).

Należy pamiętać, że lokalizacja domyślnej usługi uwierzytelniania nie zmienia się. Jednak ASP.NET AJAX umożliwia określenie lokalizacji usługi internetowej, która udostępnia ten sam interfejs klasy co serwer proxy usługi uwierzytelniania ASP.NET AJAX.

Należy również pamiętać, że ta właściwość nie powinna być ustawiona na wartość kierującą żądanie skryptu poza bieżącą witrynę. Ponieważ bieżąca aplikacja nie otrzymałaby poświadczeń uwierzytelniania, byłaby bezużyteczna; Ponadto technologia podstawowa AJAX nie powinna publikować żądań między lokacjami i może wygenerować wyjątek zabezpieczeń w przeglądarce klienta.

Ta właściwość jest obiektem reprezentującym String ścieżkę do usługi sieci Web uwierzytelniania.

timeout, właściwość (get, set):

Ta właściwość określa czas oczekiwania na usługę uwierzytelniania przed założeniem, że żądanie logowania nie powiodło się. Jeśli limit czasu wygaśnie podczas oczekiwania na ukończenie wywołania, wywołanie zwrotne zakończone żądaniem nie powiodło się, a wywołanie nie zostanie ukończone.

Ta właściwość jest obiektem reprezentującym Number liczbę milisekund oczekiwania na wyniki z usługi uwierzytelniania.

Przykład kodu: logowanie się do usługi uwierzytelniania

Poniższy znacznik to przykładowa strona ASP.NET z prostym wywołaniem skryptu metod logowania i wylogowywaniem klasy AuthenticationService.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head runat="server">
 <title>Login Example</title>
 <script type="text/javascript">
 function Login()
 {
 var userTextbox = $get("txtUser");
 var passTextbox = $get("txtPassword");
 Sys.Services.AuthenticationService.login(userTextbox.value, 
 passTextbox.value, false, null, null, LoginServiceCompleted, 
 LoginServiceFailed, "Context Info");
 }
 function Logout()
 {
 Sys.Services.AuthenticationService.logout(null, LogoutServiceCompleted, 
 LoginServiceFailed, "Context Info");
 }
 function LoginServiceFailed(error, userContext, methodName)
 {
 alert('There was an error with the authentication service:\n\n' + error);
 }
 function LoginServiceCompleted(validCredentials, userContext, methodName)
 {
 if (validCredentials)
 {
 alert('Great! You successfully logged in.');
 }
 else
 {
 alert('Oops! You gave us bad credentials!');
 }
 }
 function LogoutServiceCompleted(result, userContext, methodName)
 {
 alert('You have been logged out from the web site.');
 }
 </script>
 </head>
 <body>
 <form id="form1" runat="server">
 <asp:ScriptManager ID="ScriptManager1" runat="server" 
 EnableScriptLocalization="true">
 </asp:ScriptManager>
 <div>
 <asp:TextBox ID="txtUser" runat="Server"></asp:TextBox>
 <br />
 <asp:TextBox ID="txtPassword" runat="Server" TextMode="Password"/>
 <br />
 <asp:Button Text="Log in" ID="btnLogin" runat="server" 
 OnClientClick="Login(); return false;" />
 </div>
 </form>
 </body>
</html>

Uzyskiwanie dostępu do danych profilowania ASP.NET za pośrednictwem AJAX

Usługa profilowania ASP.NET jest również udostępniana za pośrednictwem rozszerzeń ASP.NET AJAX. Ponieważ usługa profilowania ASP.NET udostępnia bogaty, szczegółowy interfejs API do przechowywania i pobierania danych użytkownika, może to być doskonałe narzędzie zwiększające produktywność.

Usługa profilu musi być włączona w web.config; nie jest domyślnie. W tym celu upewnij się, że profileService element podrzędny ma włączoną wartość true określoną w web.config i że określono właściwości, które można odczytać lub zapisać w następujący sposób:

<system.web.extensions>
 <scripting>
 <webServices>
 <profileService enabled="true"
 readAccessProperties= Name,Address,BackgroundColor 
 writeAccessProperties= BackgroundColor />
 </webServices>
 </scripting>
</system.web.extensions>

Należy również skonfigurować usługę profilu. Mimo że konfiguracja usługi profilowania wykracza poza zakres tego oficjalnego dokumentu, warto zauważyć, że grupy zdefiniowane w ustawieniach konfiguracji profilu będą dostępne jako właściwości podrzędne nazwy grupy. Na przykład z określoną następującą sekcją profilu:

<profile enabled="true">
 <properties>
 <add name="Name" type="System.String"/>
 <group name="Address">
 <add name="Line1" type="System.String"/>
 <add name="Line2" type="System.String"/>
 <add name="City" type="System.String"/>
 <add name="State" type="System.String"/>
 <add name="Zip" type="System.String"/>
 </group>
 <add name="BackgroundColor" type="System.Drawing.Color"/>
 </properties>
</profile>

Skrypt klienta będzie mógł uzyskać dostęp do właściwości Name, Address.Line1, Address.Line2, Address.City, Address.State, Address.Zip i BackgroundColor jako właściwości pola właściwości klasy ProfileService.

Po skonfigurowaniu usługi profilowania AJAX będzie ona natychmiast dostępna na stronach; jednak będzie musiał zostać załadowany raz przed użyciem.

Członkowie sys.Services.ProfileService

pole właściwości:

Pole właściwości uwidacznia wszystkie skonfigurowane dane profilu jako właściwości podrzędne, do których można odwoływać się zgodnie z konwencją dot-operator-name. Właściwości podrzędne grup właściwości są nazywane GroupName.PropertyName. W przykładowej konfiguracji profilu przedstawionej powyżej, aby uzyskać stan użytkownika, można użyć następującego identyfikatora:

Sys.Services.ProfileService.properties.Address.State

load, metoda:

Ładuje wybraną listę lub wszystkie właściwości z serwera.

Parametry:

Nazwa parametru Znaczenie
propertyNames Opcjonalnie (domyślnie ma wartość null). Właściwości do załadowania z serwera.
loadCompletedCallback Opcjonalnie (domyślnie ma wartość null). Funkcja do wywołania po zakończeniu ładowania.
failedCallback Opcjonalnie (domyślnie ma wartość null). Funkcja do wywołania, jeśli wystąpi błąd.
Usercontext Opcjonalnie (domyślnie ma wartość null). Informacje kontekstowe, które mają zostać przekazane do funkcji wywołania zwrotnego.

Funkcja load nie ma wartości zwracanej. Jeśli wywołanie zostało zakończone pomyślnie, wywoła loadCompletedCallback parametr lub defaultLoadCompletedCallback właściwość. Jeśli wywołanie nie powiodło się lub upłynął limit czasu, failedCallback zostanie wywołany parametr lub defaultFailedCallback właściwość.

propertyNames Jeśli parametr nie jest podany, wszystkie właściwości skonfigurowane do odczytu są pobierane z serwera.

save, metoda:

Metoda save() zapisuje określoną listę właściwości (lub wszystkie właściwości) w profilu ASP.NET użytkownika.

Parametry:

Nazwa parametru Znaczenie
propertyNames Opcjonalnie (domyślnie ma wartość null). Właściwości do zapisania na serwerze.
saveCompletedCallback Opcjonalnie (domyślnie ma wartość null). Funkcja do wywołania po zakończeniu zapisywania.
failedCallback Opcjonalnie (domyślnie ma wartość null). Funkcja do wywołania, jeśli wystąpi błąd.
Usercontext Opcjonalnie (domyślnie ma wartość null). Informacje kontekstowe, które mają zostać przekazane do funkcji wywołania zwrotnego.

Funkcja save nie ma wartości zwracanej. Jeśli wywołanie zakończy się pomyślnie, wywoła saveCompletedCallback parametr lub defaultSaveCompletedCallback właściwość. Jeśli wywołanie nie powiodło się lub upłynął limit czasu, failedCallback wywołana zostanie właściwość lub defaultFailedCallback .

propertyNames Jeśli parametr ma wartość null, wszystkie właściwości profilu zostaną wysłane na serwer, a serwer zdecyduje, które właściwości można zapisać i których nie można.

defaultFailedCallback, właściwość (get, set):

Ta właściwość określa funkcję, którą należy wywołać, jeśli wystąpi błąd komunikacji z usługą internetową. Powinien otrzymać delegata (lub odwołanie do funkcji).

Odwołanie do funkcji określone przez tę właściwość powinno mieć następujący podpis:

function AuthenticationFailureCallback(error, userContext, methodName);

Parametry:

Nazwa parametru Znaczenie
Błąd Określa informacje o błędzie.
Usercontext Określa informacje kontekstowe użytkownika podane podczas wywoływanej funkcji ładowania lub zapisywania.
Methodname Nazwa metody wywołującej.

defaultSaveCompleted, właściwość (get, set):

Ta właściwość określa funkcję, którą należy wywołać po zakończeniu zapisywania danych profilu użytkownika. Powinien otrzymać delegata (lub odwołanie do funkcji).

Odwołanie do funkcji określone przez tę właściwość powinno mieć następujący podpis:

function ProfileSaveComplete(numPropsSaved, userContext, methodName);

Parametry:

Nazwa parametru Znaczenie
numPropsSaved Określa liczbę zapisanych właściwości.
Usercontext Określa informacje kontekstowe użytkownika podane podczas wywoływanej funkcji ładowania lub zapisywania.
Methodname Nazwa metody wywołującej.

defaultLoadCompleted, właściwość (get, set):

Ta właściwość określa funkcję, którą należy wywołać po zakończeniu ładowania danych profilu użytkownika. Powinien otrzymać delegata (lub odwołanie do funkcji).

Odwołanie do funkcji określone przez tę właściwość powinno mieć następujący podpis:

function ProfileLoadComplete(numPropsLoaded, userContext, methodName);

Parametry:

Nazwa parametru Znaczenie
numPropsLoaded Określa liczbę załadowanych właściwości.
Usercontext Określa informacje kontekstowe użytkownika podane podczas wywoływanej funkcji ładowania lub zapisywania.
Methodname Nazwa metody wywołującej.

path, property (get, set):

Ta właściwość programowo określa lokalizację usługi sieci Web profilu. Można go użyć do zastąpienia domyślnego dostawcy usługi profilu, a także jednego ustawionego deklaratywnie we właściwości Path w węźle podrzędnym ProfileService kontrolki ScriptManager.

Należy pamiętać, że lokalizacja domyślnej usługi profilu nie zmienia się. Jednak ASP.NET AJAX umożliwia określenie lokalizacji usługi internetowej, która udostępnia ten sam interfejs klasy co serwer proxy usługi uwierzytelniania ASP.NET AJAX.

Należy również pamiętać, że ta właściwość nie powinna być ustawiona na wartość kierującą żądanie skryptu poza bieżącą witrynę. Technologia podstawowa AJAX nie powinna publikować żądań między lokacjami i może wygenerować wyjątek zabezpieczeń w przeglądarce klienta.

Ta właściwość jest obiektem reprezentującym String ścieżkę do usługi internetowej profilu.

timeout, właściwość (get, set):

Ta właściwość określa czas oczekiwania na usługę profilu przed założeniem, że żądanie ładowania lub zapisywania nie powiodło się. Jeśli limit czasu wygaśnie podczas oczekiwania na ukończenie wywołania, wywołanie zwrotne zakończone żądaniem nie powiodło się, a wywołanie nie zostanie ukończone.

Ta właściwość jest obiektem reprezentującym Number liczbę milisekund oczekiwania na wyniki z usługi profilu.

Przykładowy kod: ładowanie danych profilu przy ładowaniu strony

Poniższy kod sprawdzi, czy użytkownik jest uwierzytelniony, a jeśli tak, załaduje preferowany kolor tła użytkownika jako stronę.

function Page_Load()
{
 if (Sys.Services.AuthenticationService.get_isLoggedIn())
 {
 Sys.Services.ProfileService.load();
 }
}
function ProfileLoaded(numPropsLoaded, userContext, methodName)
{
 document.documentElement.style.backgroundColor = Sys.Services.ProfileService.properties.BackgroundColor;
}

Korzystanie z niestandardowego dostawcy usługi uwierzytelniania

Rozszerzenia AJAX ASP.NET umożliwiają utworzenie niestandardowego dostawcy usługi uwierzytelniania skryptu przez uwidacznianie funkcji za pośrednictwem niestandardowej usługi internetowej. Aby można było go używać, usługa internetowa musi uwidocznić dwie metody i Logout; a te metody Login muszą być określone przy użyciu tych samych podpisów metod co domyślna ASP.NET usługi sieci Web AJAX Authentication.

Po utworzeniu niestandardowej usługi internetowej należy określić ścieżkę do niej, deklaratywnie na stronie, programowo w kodzie lub za pomocą skryptu klienta.

Aby deklaratywnie ustawić ścieżkę:

Aby ustawić ścieżkę deklaratywnie, dołącz element podrzędny AuthenticationService obiektu ScriptManager na stronie ASP.NET:

<asp:ScriptManager ID="ScriptManager1" runat="server">
 <AuthenticationService Path="~/AuthService.asmx" />
</asp:ScriptManager>

Aby ustawić ścieżkę w kodzie:

Aby ustawić ścieżkę programowo, określ ścieżkę za pośrednictwem wystąpienia menedżera skryptów:

protected void Page_Load(object sender, EventArgs e)
{
    this.ScriptManager1.AuthenticationService.Path = "~/AuthService.asmx";
}

Aby ustawić ścieżkę w skryscie:

Aby ustawić ścieżkę programowo w skrycie, użyj path właściwości klasy AuthenticationService:

function Login()
{
 var userTextbox = $get("txtUser");
 var passTextbox = $get("txtPassword");
 Sys.Services.AuthenticationService.set_path("./AuthService.asmx");
 Sys.Services.AuthenticationService.login(userTextbox.value, passTextbox.value, false, null, null, LoginServiceCompleted, LoginServiceFailed, "Context Info");
}

Przykładowa usługa sieci Web do uwierzytelniania niestandardowego

<%@ WebService Language="C#" Class="AuthService" %>
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Services;
[ScriptService]
[WebService]
public class AuthService : WebService
{
 [WebMethod]
 public bool Login(string userName, string password, bool createCookie)
 {
 Session["LoggedInUser"] = userName;
 return true;
 }
 [WebMethod]
 public void Logout()
 {
 Session.Abandon();
 }
}

Podsumowanie

usługi ASP.NET — w szczególności profilowanie, członkostwo i usługi uwierzytelniania — są łatwo widoczne w języku JavaScript w przeglądarce klienta. Dzięki temu deweloperzy mogą bezproblemowo zintegrować kod po stronie klienta z mechanizmem uwierzytelniania bez względu na mechanizmy kontroli, takie jak UpdatePanels, do wykonywania ciężkich operacji podnoszenia. Dane profilu mogą być również chronione przed klientem, korzystając z ustawień konfiguracji sieci Web; domyślnie nie są dostępne żadne dane, a deweloperzy muszą wyrazić zgodę na właściwości profilu.

Ponadto dzięki utworzeniu uproszczonych implementacji usług internetowych z równoważnymi sygnaturami metod deweloperzy mogą tworzyć niestandardowych dostawców skryptów dla tych wewnętrznych usług ASP.NET. Obsługa tych technik upraszcza tworzenie rozbudowanych aplikacji klienckich, zapewniając deweloperom szeroką elastyczność zaspokajania określonych potrzeb.

Życiorys

Scott Cate współpracuje z technologiami internetowymi firmy Microsoft od 1997 roku i jest prezesem myKB.com (www.myKB.com), gdzie specjalizuje się w pisaniu ASP.NET opartych na aplikacjach skoncentrowanych na rozwiązaniach oprogramowania bazy wiedzy. Scott może skontaktować się za pośrednictwem adresu e-mail scott.cate@myKB.com lub jego bloga na ScottCate.com