Informazioni sui servizi di autenticazione e applicazione del profilo di ASP.NET AJAX

di Scott Cate

Il servizio di autenticazione consente agli utenti di fornire le credenziali per ricevere un cookie di autenticazione ed è il servizio gateway per consentire profili utente personalizzati forniti da ASP.NET. L'uso del servizio di autenticazione ASP.NET AJAX è compatibile con l'autenticazione basata su form ASP.NET standard, pertanto le applicazioni che usano attualmente l'autenticazione basata su form (ad esempio con il controllo di accesso) non verranno interrotte eseguendo l'aggiornamento al servizio di autenticazione AJAX.

Introduzione

Come parte di .NET Framework 3.5, Microsoft sta offrendo un aggiornamento dell'ambiente sizable; non solo è disponibile un nuovo ambiente di sviluppo, ma sono in arrivo le nuove funzionalità di query di Language-Integrated (LINQ) e altri miglioramenti del linguaggio. Inoltre, alcune funzionalità note di altri set di strumenti, in particolare le estensioni ASP.NET AJAX, vengono incluse come membri di prima classe della libreria di classi base di .NET Framework. Queste estensioni consentono molte nuove funzionalità client avanzate, tra cui il rendering parziale delle pagine senza richiedere un aggiornamento a pagina completa, la possibilità di accedere ai servizi Web tramite script client (inclusa l'API di profilatura ASP.NET) e un'API lato client estesa progettata per eseguire il mirroring di molti degli schemi di controllo visualizzati nel set di controlli sul lato server ASP.NET.

Questo white paper esamina l'implementazione e l'uso dei servizi di profilatura e autenticazione basata su form ASP.NET esposti da Microsoft ASP.NET AJAX ExtensionsThe AJAX Extensions rendono l'autenticazione basata su form incredibilmente facile da supportare, perché viene esposta tramite uno script proxy del servizio Web. Le estensioni AJAX supportano anche l'autenticazione personalizzata tramite la classe AuthenticationServiceManager.

Questo white paper si basa sulla versione Beta 2 di Visual Studio 2008 e .NET Framework 3.5. Questo white paper presuppone inoltre che si stia usando Visual Studio 2008 Beta 2, non Visual Web Developer Express e verranno fornite procedure dettagliate in base all'interfaccia utente di Visual Studio. Alcuni esempi di codice possono usare modelli di progetto non disponibili in Visual Web Developer Express.

Profili e autenticazione

I servizi profili e autenticazione di Microsoft ASP.NET vengono forniti dal sistema di autenticazione ASP.NET Forms e sono componenti standard di ASP.NET. Le estensioni ASP.NET AJAX forniscono agli script l'accesso a questi servizi tramite proxy di script, tramite un modello abbastanza semplice nello spazio dei nomi Sys.Services della libreria AJAX client.

Il servizio di autenticazione consente agli utenti di fornire le credenziali per ricevere un cookie di autenticazione ed è il servizio gateway per consentire profili utente personalizzati forniti da ASP.NET. L'uso del servizio di autenticazione ASP.NET AJAX è compatibile con l'autenticazione basata su form ASP.NET standard, pertanto le applicazioni che usano attualmente l'autenticazione basata su form (ad esempio con il controllo di accesso) non verranno interrotte eseguendo l'aggiornamento al servizio di autenticazione AJAX.

Il servizio Profilo consente l'integrazione automatica e l'archiviazione dei dati utente in base all'appartenenza fornita dal servizio di autenticazione. I dati archiviati vengono specificati dal file web.config e i vari provider di servizi di profilatura gestiscono la gestione dei dati. Come per il servizio di autenticazione, il servizio profilo AJAX è compatibile con il servizio profilo di ASP.NET standard, in modo che le pagine che attualmente incorporano funzionalità del servizio profilo ASP.NET non debbano essere interrotte includendo il supporto AJAX.

L'incorporamento dei servizi di autenticazione e profilatura ASP.NET in un'applicazione non rientra nell'ambito di questo white paper. Per altre informazioni sull'argomento, vedere l'articolo di riferimento di MSDN Library Sulla gestione degli utenti tramite l'appartenenza all'indirizzo https://msdn.microsoft.com/library/tw292whz.aspx. ASP.NET include anche un'utilità per configurare automaticamente l'appartenenza con un SQL Server, ovvero il provider di servizi di autenticazione predefinito per l'appartenenza ASP.NET. Per altre informazioni, vedere l'articolo ASP.NET SQL Server Strumento di registrazione (Aspnet_regsql.exe) all'indirizzo https://msdn.microsoft.com/library/ms229862(vs.80).aspx.

Uso del servizio di autenticazione ASP.NET AJAX

Il servizio di autenticazione AJAX ASP.NET deve essere abilitato nel file web.config:

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

Il servizio di autenticazione richiede l'abilitazione dell'autenticazione basata su form ASP.NET e richiede l'abilitazione dei cookie nel browser client (uno script non può abilitare una sessione senza cookie perché le sessioni senza cookie richiedono parametri URL).

Dopo aver abilitato e configurato il servizio di autenticazione AJAX, lo script client può sfruttare immediatamente l'oggetto Sys.Services.AuthenticationService. Principalmente, lo script client vuole sfruttare il metodo e isLoggedIn la login proprietà . Esistono diverse proprietà per fornire le impostazioni predefinite per il metodo di accesso, che può accettare un numero elevato di parametri.

Membri sys.Services.AuthenticationService

metodo di accesso:

Il metodo login() avvia una richiesta di autenticazione delle credenziali dell'utente. Questo metodo è asincrono e non blocca l'esecuzione.

Parametri:

Nome parametro Significato
userName Obbligatorio. Nome utente da autenticare.
password Facoltativo (il valore predefinito è Null). Password dell'utente.
isPersistent Facoltativo (il valore predefinito è false). Indica se il cookie di autenticazione dell'utente deve essere persistente tra le sessioni. Se false, l'utente disconnetterà quando il browser viene chiuso o la sessione scade.
redirectUrl Facoltativo (il valore predefinito è Null). URL a cui reindirizzare il browser al momento dell'autenticazione completata. Se questo parametro è Null o una stringa vuota, non viene eseguito alcun reindirizzamento.
customInfo Facoltativo (il valore predefinito è Null). Questo parametro è attualmente inutilizzato ed è riservato per uso futuro.
loginCompletedCallback Facoltativo (il valore predefinito è Null). Funzione da chiamare al termine dell'accesso. Se specificato, questo parametro esegue l'override della proprietà defaultLoginCompleted.
failedCallback Facoltativo (il valore predefinito è Null). Funzione da chiamare quando l'account di accesso non è riuscito. Se specificato, questo parametro esegue l'override della proprietà defaultFailedCallback.
Usercontext Facoltativo (il valore predefinito è Null). Dati del contesto utente personalizzati che devono essere passati alle funzioni di callback.

Valore restituito:

Questa funzione non include un valore restituito. Tuttavia, al completamento di una chiamata a questa funzione sono inclusi diversi comportamenti:

  • La pagina corrente verrà aggiornata o modificata se il redirectUrl parametro non è null né una stringa vuota.
  • Tuttavia, se il parametro è null o una stringa vuota, viene chiamato il parametro o defaultLoginCompletedCallback la loginCompletedCallback proprietà .
  • Se la chiamata al servizio Web ha esito negativo, viene chiamato il failedCallback parametro della defaultFailedCallback proprietà .

metodo di disconnessione:

Il metodo logout() rimuove il cookie delle credenziali e disconnette l'utente corrente dall'applicazione Web.

Parametri:

Nome parametro Significato
redirectUrl Facoltativo (il valore predefinito è Null). URL a cui reindirizzare il browser al momento dell'autenticazione completata. Se questo parametro è Null o una stringa vuota, non viene eseguito alcun reindirizzamento.
logoutCompletedCallback Facoltativo (il valore predefinito è Null). Funzione da chiamare al termine della disconnessione. Se specificato, questo parametro esegue l'override della proprietà defaultLogoutCompleted.
failedCallback Facoltativo (il valore predefinito è Null). Funzione da chiamare quando l'account di accesso non è riuscito. Se specificato, questo parametro esegue l'override della proprietà defaultFailedCallback.
Usercontext Facoltativo (il valore predefinito è Null). Dati del contesto utente personalizzati che devono essere passati alle funzioni di callback.

Valore restituito:

Questa funzione non include un valore restituito. Tuttavia, al completamento di una chiamata a questa funzione sono inclusi diversi comportamenti:

  • La pagina corrente verrà aggiornata o modificata se il redirectUrl parametro non è null né una stringa vuota.
  • Tuttavia, se il parametro è null o una stringa vuota, viene chiamato il parametro o defaultLogoutCompletedCallback la logoutCompletedCallback proprietà .
  • Se la chiamata al servizio Web ha esito negativo, viene chiamato il failedCallback parametro della defaultFailedCallback proprietà .

proprietà defaultFailedCallback (get, set):

Questa proprietà specifica una funzione che deve essere chiamata se si verifica un errore di comunicazione con il servizio Web. Deve ricevere un delegato (o un riferimento alla funzione).

Il riferimento alla funzione specificato da questa proprietà deve avere la firma seguente:

function AuthenticationFailureCallback(error, userContext, methodName);

Parametri:

Nome parametro Significato
error Specifica le informazioni sull'errore.
Usercontext Specifica le informazioni sul contesto utente fornite quando è stata chiamata la funzione di accesso o disconnessione.
methodName Nome del metodo chiamante.

proprietà defaultLoginCompletedCallback (get, set):

Questa proprietà specifica una funzione che deve essere chiamata al completamento della chiamata al servizio Web di accesso. Deve ricevere un delegato (o un riferimento alla funzione).

Il riferimento alla funzione specificato da questa proprietà deve avere la firma seguente:

function AuthenticationLoginCompletedCallback(validCredentials, userContext, methodName);

Parametri:

Nome parametro Significato
validCredentials Specifica se l'utente ha fornito credenziali valide. true se l'utente ha eseguito correttamente l'accesso; altrimenti false.
Usercontext Specifica le informazioni sul contesto utente fornite quando è stata chiamata la funzione di accesso.
methodName Nome del metodo chiamante.

proprietà defaultLogoutCompletedCallback (get, set):

Questa proprietà specifica una funzione che deve essere chiamata quando è stata completata la chiamata al servizio Web di disconnessione. Deve ricevere un delegato (o un riferimento alla funzione).

Il riferimento alla funzione specificato da questa proprietà deve avere la firma seguente:

function AuthenticationLogoutCompletedCallback(result, userContext, methodName);

Parametri:

Nome parametro Significato
result Questo parametro sarà nullsempre ; è riservato per l'uso futuro.
Usercontext Specifica le informazioni sul contesto utente fornite quando è stata chiamata la funzione di accesso.
methodName Nome del metodo chiamante.

proprietà isLoggedIn (get):

Questa proprietà ottiene lo stato di autenticazione corrente dell'utente; viene impostato dall'oggetto ScriptManager durante una richiesta di pagina.

Questa proprietà restituisce true se l'utente è attualmente connesso; in caso contrario, restituisce false.

proprietà path (get, set):

Questa proprietà determina a livello di codice il percorso del servizio Web di autenticazione. Può essere usato per eseguire l'override del provider di autenticazione predefinito, nonché di un set dichiarativo nella proprietà Path del nodo figlio di AuthenticationService del controllo ScriptManager (per altre informazioni, vedere l'argomento Uso di un provider di servizi di autenticazione personalizzato di seguito).

Si noti che il percorso del servizio di autenticazione predefinito non cambia. Tuttavia, ASP.NET AJAX consente di specificare il percorso di un servizio Web che fornisce la stessa interfaccia di classe del proxy del servizio di autenticazione AJAX ASP.NET.

Si noti anche che questa proprietà non deve essere impostata su un valore che indirizza la richiesta di script fuori dal sito corrente. Poiché l'applicazione corrente non riceve le credenziali di autenticazione, sarebbe inutile; inoltre, la tecnologia sottostante AJAX non deve pubblicare richieste tra siti e può generare un'eccezione di sicurezza nel browser client.

Questa proprietà è un String oggetto che rappresenta il percorso del servizio Web di autenticazione.

proprietà timeout (get, set):

Questa proprietà determina il periodo di tempo per attendere il servizio di autenticazione prima di presupporre che la richiesta di accesso non sia riuscita. Se il timeout scade durante l'attesa del completamento di una chiamata, il callback non riuscito della richiesta verrà chiamato e la chiamata non verrà completata.

Questa proprietà è un Number oggetto che rappresenta il numero di millisecondi da attendere i risultati dal servizio di autenticazione.

Esempio di codice: accesso al servizio di autenticazione

Il markup seguente è un esempio ASP.NET pagina con una semplice chiamata di script ai metodi di accesso e disconnessione della classe 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>

Accesso ai dati di profilatura ASP.NET tramite AJAX

Il servizio di profilatura ASP.NET viene esposto anche tramite le estensioni AJAX ASP.NET. Poiché il servizio di profilatura ASP.NET offre un'API granulare ricca e granulare da cui archiviare e recuperare i dati utente, questo può essere un eccellente strumento di produttività.

Il servizio profilo deve essere abilitato in web.config; non è per impostazione predefinita. A tale scopo, assicurarsi che l'elemento profileService figlio sia abilitato= true specificato in web.config e che siano state specificate quali proprietà possono essere letti o scritti come indicato di seguito:

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

È necessario configurare anche il servizio profilo. Anche se la configurazione del servizio di profilatura è esterna all'ambito di questo white paper, vale la pena notare che i gruppi definiti nelle impostazioni di configurazione del profilo saranno accessibili come proprietà secondarie del nome del gruppo. Ad esempio, con la sezione del profilo seguente specificata:

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

Lo script client sarà in grado di accedere a Name, Address.Line1, Address.Line2, Address.City, Address.State, Address.Zip e BackgroundColor come proprietà del campo proprietà della classe ProfileService.

Dopo aver configurato il servizio profilatura AJAX, sarà immediatamente disponibile nelle pagine; tuttavia, deve essere caricato una volta prima dell'uso.

Membri Sys.Services.ProfileService

campo proprietà:

Il campo proprietà espone tutti i dati del profilo configurati come proprietà figlio a cui è possibile fare riferimento dalla convenzione dot-operator-name. Le proprietà figlio dei gruppi di proprietà sono denominate GroupName.PropertyName. Nella configurazione del profilo di esempio presentata in precedenza, per ottenere lo stato dell'utente, è possibile usare l'identificatore seguente:

Sys.Services.ProfileService.properties.Address.State

metodo load:

Carica un elenco selezionato o tutte le proprietà dal server.

Parametri:

Nome parametro Significato
propertyNames Facoltativo (impostazione predefinita su Null). Proprietà da caricare dal server.
loadCompletedCallback Facoltativo (impostazione predefinita su Null). Funzione da chiamare al termine del caricamento.
failedCallback Facoltativo (impostazione predefinita su Null). Funzione da chiamare se si verifica un errore.
Usercontext Facoltativo (impostazione predefinita su Null). Informazioni sul contesto da passare alla funzione di callback.

La funzione di caricamento non ha un valore restituito. Se la chiamata è stata completata correttamente, chiamerà il parametro o defaultLoadCompletedCallback la loadCompletedCallback proprietà. Se la chiamata non è riuscita o il timeout è scaduto, verrà chiamato il parametro o defaultFailedCallback la failedCallback proprietà.

Se il propertyNames parametro non viene fornito, tutte le proprietà configurate in lettura vengono recuperate dal server.

metodo save:

Il metodo save() salva l'elenco di proprietà specificato (o tutte le proprietà) al profilo di ASP.NET dell'utente.

Parametri:

Nome parametro Significato
propertyNames Facoltativo (impostazione predefinita su Null). Proprietà da salvare nel server.
saveCompletedCallback Facoltativo (impostazione predefinita su Null). Funzione da chiamare al termine del salvataggio.
failedCallback Facoltativo (impostazione predefinita su Null). Funzione da chiamare se si verifica un errore.
Usercontext Facoltativo (impostazione predefinita su Null). Informazioni sul contesto da passare alla funzione di callback.

La funzione di salvataggio non ha un valore restituito. Se la chiamata viene completata correttamente, chiamerà il parametro o defaultSaveCompletedCallback la saveCompletedCallback proprietà. Se la chiamata non è riuscita o il timeout è scaduto, verrà chiamata la failedCallback proprietà o defaultFailedCallback .

Se il propertyNames parametro è Null, tutte le proprietà del profilo verranno inviate al server e il server deciderà quali proprietà possono essere salvate e quali non possono.

proprietà defaultFailedCallback (get, set):

Questa proprietà specifica una funzione che deve essere chiamata se si verifica un errore di comunicazione con il servizio Web. Deve ricevere un delegato (o un riferimento alla funzione).

Il riferimento alla funzione specificato da questa proprietà deve avere la firma seguente:

function AuthenticationFailureCallback(error, userContext, methodName);

Parametri:

Nome parametro Significato
Errore Specifica le informazioni sull'errore.
Usercontext Specifica le informazioni sul contesto utente fornite quando è stata chiamata la funzione di caricamento o salvataggio.
methodName Nome del metodo chiamante.

proprietà defaultSaveCompleted (get, set):

Questa proprietà specifica una funzione che deve essere chiamata al completamento del salvataggio dei dati del profilo dell'utente. Deve ricevere un delegato (o un riferimento alla funzione).

Il riferimento alla funzione specificato da questa proprietà deve avere la firma seguente:

function ProfileSaveComplete(numPropsSaved, userContext, methodName);

Parametri:

Nome parametro Significato
numPropsSaved Specifica il numero di proprietà salvate.
Usercontext Specifica le informazioni sul contesto utente fornite quando è stata chiamata la funzione di caricamento o salvataggio.
methodName Nome del metodo chiamante.

proprietà defaultLoadCompleted (get, set):

Questa proprietà specifica una funzione che deve essere chiamata al completamento del caricamento dei dati del profilo dell'utente. Deve ricevere un delegato (o un riferimento alla funzione).

Il riferimento alla funzione specificato da questa proprietà deve avere la firma seguente:

function ProfileLoadComplete(numPropsLoaded, userContext, methodName);

Parametri:

Nome parametro Significato
numPropsLoaded Specifica il numero di proprietà caricate.
Usercontext Specifica le informazioni sul contesto utente fornite quando è stata chiamata la funzione di caricamento o salvataggio.
methodName Nome del metodo chiamante.

proprietà path (get, set):

Questa proprietà determina a livello di codice la posizione del servizio Web del profilo. Può essere usato per eseguire l'override del provider di servizi profilo predefinito, nonché di un set dichiarativo nella proprietà Path del nodo figlio profileService del controllo ScriptManager.

Si noti che il percorso del servizio profilo predefinito non cambia. Tuttavia, ASP.NET AJAX consente di specificare il percorso di un servizio Web che fornisce la stessa interfaccia di classe del proxy del servizio di autenticazione AJAX ASP.NET.

Si noti anche che questa proprietà non deve essere impostata su un valore che indirizza la richiesta di script fuori dal sito corrente. La tecnologia sottostante AJAX non deve pubblicare richieste tra siti e può generare un'eccezione di sicurezza nel browser client.

Questa proprietà è un String oggetto che rappresenta il percorso del servizio Web del profilo.

proprietà timeout (get, set):

Questa proprietà determina il tempo di attesa del servizio profilo prima che il carico o la richiesta di salvataggio non sia riuscita. Se il timeout scade durante l'attesa del completamento di una chiamata, il callback non riuscito della richiesta verrà chiamato e la chiamata non verrà completata.

Questa proprietà è un Number oggetto che rappresenta il numero di millisecondi da attendere i risultati dal servizio profilo.

Esempio di codice: Caricamento dei dati del profilo al caricamento della pagina

Il codice seguente verificherà se un utente è autenticato e, in tal caso, caricherà il colore di sfondo preferito dell'utente come pagina.

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;
}

Uso di un provider di servizi di autenticazione personalizzato

Le estensioni AJAX ASP.NET consentono di creare un provider di servizi di autenticazione dello script personalizzato esponendo la funzionalità tramite un servizio Web personalizzato. Per essere usato, il servizio Web deve esporre due metodi e Logout; e questi metodi Login devono essere specificati con le stesse firme del metodo predefinito ASP.NET servizio Web AJAX Authentication.

Dopo aver creato il servizio Web personalizzato, sarà necessario specificare il percorso, dichiarativo nella pagina, a livello di codice o tramite lo script client.

Per impostare il percorso dichiarativo:

Per impostare il percorso dichiarativo, includere il figlio AuthenticationService dell'oggetto ScriptManager nella pagina ASP.NET:

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

Per impostare il percorso nel codice:

Per impostare il percorso a livello di codice, specificare il percorso tramite l'istanza di Gestione script:

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

Per impostare il percorso nello script:

Per impostare il percorso a livello di codice nello script, utilizzare la path proprietà della classe 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");
}

Esempio di servizio Web per l'autenticazione personalizzata

<%@ 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();
 }
}

Riepilogo

ASP.NET servizi, in particolare la profilatura, l'appartenenza e i servizi di autenticazione, vengono facilmente esposti a JavaScript nel browser client. Ciò consente agli sviluppatori di integrare il codice lato client con il meccanismo di autenticazione senza problemi, senza dipendere dai controlli come UpdatePanels per eseguire il sollevamento elevato. I dati del profilo possono essere protetti anche dal client usando le impostazioni di configurazione Web; nessun dato è disponibile per impostazione predefinita e gli sviluppatori devono acconsentire esplicitamente alle proprietà del profilo.

Inoltre, creando implementazioni semplificate del servizio Web con firme di metodi equivalenti, gli sviluppatori possono creare provider di script personalizzati per questi servizi intrinseci ASP.NET. Il supporto per queste tecniche semplifica lo sviluppo di applicazioni client avanzate, fornendo agli sviluppatori un'ampia gamma di flessibilità per soddisfare esigenze specifiche.

Biografia

Scott Cate ha lavorato con le tecnologie Web Microsoft dal 1997 ed è il presidente di myKB.com (www.myKB.com) dove si è specializzato nella scrittura di applicazioni basate su ASP.NET incentrate sulle soluzioni software knowledge base. Scott può essere contattato tramite posta elettronica all'indirizzo o al suo blog all'indirizzo scott.cate@myKB.comScottCate.com