Condividi tramite


Comprendere i servizi di autenticazione e profilo dell'applicazione 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 AJAX ASP.NET è compatibile con l'autenticazione basata su form ASP.NET standard, pertanto le applicazioni attualmente che usano l'autenticazione basata su form (ad esempio con il controllo Di accesso) non verranno interrotte eseguendo l'aggiornamento al servizio di autenticazione AJAX.

Introduzione

Nell'ambito del .NET Framework 3.5, Microsoft sta offrendo un aggiornamento significativo dell'ambiente; non solo è disponibile un nuovo ambiente di sviluppo, ma sono in arrivo le nuove funzionalità Integrated Language Query (LINQ) e altri miglioramenti del linguaggio. Inoltre, alcune funzionalità familiari di altri set di strumenti, in particolare le estensioni ASP.NET AJAX, vengono incluse come membri di prima classe della libreria di classi di 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 whitepaper esamina l'implementazione e l'uso dei servizi di profilatura e autenticazione basata su form ASP.NET esposti da Microsoft ASP.NET AJAX Extensions. Le AJAX Extensions rendono l'autenticazione basata su form estremamente semplice da supportare, in quanto entrambi i servizi vengono esposti 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 anche che si lavorerà con Visual Studio 2008 Beta 2, non Visual Web Developer Express e fornirà procedure dettagliate in base all'interfaccia utente di Visual Studio. Alcuni esempi di codice potrebbero 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 AJAX ASP.NET forniscono agli script l'accesso a questi servizi tramite proxy di script, tramite un modello piuttosto 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 AJAX ASP.NET è compatibile con l'autenticazione basata su form ASP.NET standard, pertanto le applicazioni attualmente che usano 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 di ASP.NET in un'applicazione non rientra nell'ambito di questo white paper. Per altre informazioni sull'argomento, vedere l'articolo di riferimento su MSDN Library Managing Users by Using Membership all'indirizzo https://msdn.microsoft.com/library/tw292whz.aspx. ASP.NET include anche un'utilità per configurare automaticamente Membership con un'istanza di SQL Server, ovvero il provider di servizi di autenticazione predefinito per Membership di ASP.NET. Per altre informazioni, vedere l'articolo ASP.NET SQL Server Registration Tool (Aspnet_regsql.exe) all'indirizzo https://msdn.microsoft.com/library/ms229862(vs.80).aspx.

Uso del servizio di autenticazione AJAX ASP.NET

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 del client vorrà sfruttare il metodo login e la proprietà isLoggedIn. Esistono diverse proprietà per fornire le impostazioni predefinite per il metodo di accesso, che può accettare un numero elevato di parametri.

Membri di Sys.Services.AuthenticationService

metodo di accesso:

Il metodo login() avvia una richiesta per autenticare le credenziali dell'utente. Questo metodo è asincrono e non blocca l'esecuzione.

Parametri:

il nome del parametro significato
nome utente Obbligatorio. Nome utente da autenticare.
parola d’ordine 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 si disconnetterà quando il browser viene chiuso o la sessione scade.
URL di reindirizzamento Facoltativo (il valore predefinito è Null). URL a cui reindirizzare il browser al completamento dell'autenticazione. Se questo parametro è null o una stringa vuota, non viene eseguito alcun reindirizzamento.
informazioni personalizzate Facoltativo (il valore predefinito è Null). Questo parametro è attualmente inutilizzato ed è riservato per un 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 il tentativo di accesso non è riuscito. Se specificato, questo parametro esegue l'override della proprietà defaultFailedCallback.
contesto utente Facoltativo (il valore predefinito è Null). Dati di 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 verrà modificata se il redirectUrl parametro non è null né una stringa vuota.
  • Tuttavia, se il parametro era null o una stringa vuota, viene chiamato il loginCompletedCallback parametro o la proprietà defaultLoginCompletedCallback.
  • 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:

il nome del parametro significato
URL di reindirizzamento Facoltativo (il valore predefinito è Null). URL a cui reindirizzare il browser al completamento dell'autenticazione. 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 il login è fallito. Se specificato, questo parametro esegue l'override della proprietà defaultFailedCallback.
userContext Facoltativo (il valore predefinito è Null). Dati di 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 verrà modificata se il redirectUrl parametro non è null né una stringa vuota.
  • Tuttavia, se il parametro è null o una stringa vuota, viene chiamato il parametro logoutCompletedCallback o la proprietà defaultLogoutCompletedCallback.
  • 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 a una funzione).

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

function AuthenticationFailureCallback(error, userContext, methodName);

Parametri:

il nome del 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 a una funzione).

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

function AuthenticationLoginCompletedCallback(validCredentials, userContext, methodName);

Parametri:

il nome del parametro significato
CredenzialiValide Specifica se l'utente ha fornito credenziali valide. true se l'utente ha eseguito l'accesso; in caso contrario 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 al completamento della chiamata al servizio Web di disconnessione. Deve ricevere un delegato (o un riferimento a una funzione).

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

function AuthenticationLogoutCompletedCallback(result, userContext, methodName);

Parametri:

il nome del parametro significato
risultato Questo parametro sarà nullsempre ; è riservato per un 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, così come di uno impostato dichiarativamente nella proprietà Path del nodo figlio AuthenticationService del controllo ScriptManager. Per ulteriori informazioni, consultare l'argomento "Utilizzo di un provider di servizi di autenticazione personalizzato" riportato 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 all'esterno del 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 tempo di attesa per il servizio di autenticazione prima di considerare la richiesta di accesso come fallita. Se il timeout scade durante l'attesa del completamento di una chiamata, verrà chiamato il callback di richiesta non riuscita e la chiamata non verrà completata.

Questa proprietà è un Number oggetto che rappresenta il numero di millisecondi di attesa dei 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 avanzata e granulare in base alla quale 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 figlio profileService abbia enable=true specificato in web.config e che siano state specificate le proprietà che possono essere lette o scritte come segue:

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

È necessario configurare anche il servizio profili. Anche se la configurazione del servizio di profilatura non rientra nell'ambito di questo white paper, è utile notare che i gruppi definiti nelle impostazioni di configurazione del profilo saranno accessibili come sottoproprietà 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 può accedere alle proprietà Name, Address.Line1, Address.Line2, Address.City, Address.State, Address.Zip e BackgroundColor del campo delle proprietà della classe ProfileService.

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

Membri di Sys.Services.ProfileService

campo delle proprietà:

Il campo delle proprietà espone tutti i dati del profilo configurati come proprietà figlio a cui è possibile fare riferimento tramite la convenzione dot-operator-name. Le proprietà figlio dei gruppi di proprietà vengono definite 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 di caricamento:

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

Parametri:

il nome del parametro significato
propertyNames Facoltativo (il valore predefinito è Null). Proprietà da caricare dal server.
loadCompletedCallback Facoltativo (il valore predefinito è Null). Funzione da chiamare al termine del caricamento.
failedCallback Facoltativo (il valore predefinito è Null). Funzione da chiamare se si verifica un errore.
Usercontext Facoltativo (il valore predefinito è 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 loadCompletedCallback parametro o la defaultLoadCompletedCallback proprietà. Se la chiamata non è riuscita o il timeout è scaduto, verranno chiamati il parametro failedCallback o la proprietà defaultFailedCallback.

Se il parametro propertyNames non viene specificato, tutte le proprietà configurate per la lettura vengono recuperate dal server.

metodo save:

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

Parametri:

il nome del parametro significato
propertyNames Facoltativo (il valore predefinito è Null). Proprietà da salvare nel server.
saveCompletedCallback Facoltativo (il valore predefinito è Null). Funzione da chiamare al termine del salvataggio.
failedCallback Facoltativo (il valore predefinito è Null). Funzione da chiamare se si verifica un errore.
Usercontext Facoltativo (il valore predefinito è Null). Informazioni sul contesto da passare alla funzione di callback.

La funzione save non ha un valore restituito. Se la chiamata viene completata correttamente, chiamerà il parametro saveCompletedCallback o la proprietà defaultSaveCompletedCallback. 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 a una funzione).

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

function AuthenticationFailureCallback(error, userContext, methodName);

Parametri:

il nome del parametro significato
Error 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 a una funzione).

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

function ProfileSaveComplete(numPropsSaved, userContext, methodName);

Parametri:

il nome del 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 a una funzione).

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

function ProfileLoadComplete(numPropsLoaded, userContext, methodName);

Parametri:

il nome del 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 il percorso del servizio Web del profilo. Può essere usato per eseguire l'override del provider del servizio profilo predefinito, nonché di uno impostato dichiarativamente nella proprietà Path del nodo figlio ProfileService del controllo ScriptManager.

Si noti che la posizione 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 all'esterno del sito corrente. La tecnologia sottostante AJAX non deve inviare richieste tra siti e può generare un'eccezione di sicurezza nel browser client.

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

proprietà timeout (get, set):

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

Questa proprietà è un Number oggetto che rappresenta il numero di millisecondi di attesa dei risultati dal servizio profili.

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 script personalizzato esponendo le funzionalità tramite un servizio Web personalizzato. Per poter essere usato, il servizio Web deve esporre due metodi Login e Logout, e questi metodi devono essere specificati con le stesse firme del metodo del servizio Web di autenticazione AJAX predefinito ASP.NET.

Dopo aver creato il servizio web personalizzato, sarà necessario specificare il percorso verso il servizio, in modo dichiarativo sulla tua pagina, programmaticamente nel codice o tramite script client.

Per impostare il percorso in modo dichiarativo:

Per impostare il percorso in modo dichiarativo, includere l'elemento 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 del gestore dello 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");
}

Servizio Web di esempio 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();
 }
}

Sommario

I servizi di ASP.NET, in particolare i servizi di profilazione, membership e autenticazione, vengono facilmente esposti a JavaScript nel browser client. Ciò consente agli sviluppatori di integrare facilmente il codice lato client con il meccanismo di autenticazione, senza dipendere da controlli come gli UpdatePanels per svolgere le operazioni più complesse. I dati del profilo possono essere protetti anche dal client, utilizzando 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, offrendo agli sviluppatori un'ampia gamma di flessibilità per soddisfare esigenze specifiche.

Bio

Scott Cate lavora 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 della Knowledge Base. Scott può essere contattato via e-mail all'indirizzo scott.cate@myKB.com o tramite il suo blog all'indirizzo ScottCate.com