Condividi tramite


FormsAuthentication.SignOut Metodo

Definizione

Rimuove dal browser il ticket di autenticazione basata su form.

public:
 static void SignOut();
public static void SignOut ();
static member SignOut : unit -> unit
Public Shared Sub SignOut ()

Esempio

L'esempio di codice seguente cancella il cookie di autenticazione basata su form usando il SignOut metodo e reindirizza l'utente alla pagina di accesso usando il RedirectToLoginPage metodo .

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

public void LoginLink_OnClick(object sender, EventArgs args)
{
  FormsAuthentication.SignOut();
  FormsAuthentication.RedirectToLoginPage();
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>

<form id="form1" runat="server">
Welcome <b><%=User.Identity.Name%></b>. Not <b><%=User.Identity.Name%></b>? 
Click <asp:LinkButton id="LoginLink" Text="here" 
                      OnClick="LoginLink_OnClick" runat="server" />
to sign in.

<!-- Page Contents -->

</form>



</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

Public Sub LoginLink_OnClick(sender As Object, args As EventArgs)
  FormsAuthentication.SignOut()
  FormsAuthentication.RedirectToLoginPage()
End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>

<form id="form1" runat="server">
Welcome <b><%=User.Identity.Name%></b>. Not <b><%=User.Identity.Name%></b>? 
Click <asp:LinkButton id="LoginLink" Text="here" 
                      OnClick="LoginLink_OnClick" runat="server" />
to sign in.

<!-- Page Contents -->

</form>



</body>
</html>

Commenti

Il SignOut metodo rimuove le informazioni sul ticket di autenticazione basata su form dal cookie o dall'URL se CookiesSupported è false. È possibile usare il SignOut metodo insieme al RedirectToLoginPage metodo per disconnettere un utente e consentire a un altro utente di accedere.

Se si esegue esclusivamente in modalità senza cookie o se si supportano utenti autenticati e anonimi, è necessario controllare in modo esplicito il reindirizzamento alla pagina di accesso se è necessaria una logica di business speciale per l'esecuzione in seguito alla rimozione dell'identificatore anonimo.

Quando viene chiamato il SignOut metodo , viene eseguito un reindirizzamento alla pagina di accesso dell'applicazione chiamando il metodo con il endResponseRedirect parametro impostato su false. Il reindirizzamento non viene eseguito fino al termine dell'esecuzione della pagina corrente, quindi è possibile eseguire codice aggiuntivo. Se il codice non contiene un reindirizzamento esplicito a un'altra pagina, l'utente viene reindirizzato alla pagina di accesso configurata nel file di configurazione dell'applicazione.

La chiamata al SignOut metodo rimuove solo il cookie di autenticazione basata su form. Il server Web non archivia ticket di autenticazione validi e scaduti per un confronto successivo. Questo rende il sito vulnerabile a un attacco di riproduzione se un utente malintenzionato ottiene un cookie di autenticazione basata su moduli valido. Per migliorare la sicurezza quando si usa un cookie di autenticazione basata su form, è necessario eseguire le operazioni seguenti:

  • Usare la scadenza assoluta per i cookie di autenticazione basata su form impostando la SlidingExpiration proprietà su false. Ciò limita la finestra in cui è possibile riprodurre un cookie dirottato.

  • Rilasciare e accettare solo i cookie di autenticazione su Secure Sockets Layer (SSL), impostando la RequireSSL proprietà su true e eseguendo l'intero sito Web in SSL. L'impostazione della RequireSSL proprietà su true garantisce che ASP.NET non invierà mai un cookie di autenticazione al browser tramite una connessione non SSL. Tuttavia, il client potrebbe non rispettare l'impostazione sicura del cookie. Ciò significa che il client potrebbe inviare il cookie di autenticazione dei moduli tramite una connessione non SSL, lasciandolo quindi vulnerabile al dirottamento. È possibile impedire a un client di inviare il cookie di autenticazione basata su form in chiaro eseguendo l'intero sito Web in SSL.

  • Usare l'archiviazione permanente nel server per registrare quando un utente esce dal sito Web e quindi usare un evento dell'applicazione, PostAuthenticateRequest ad esempio un evento per determinare se l'utente corrente è stato autenticato con l'autenticazione basata su form. Se l'utente è stato autenticato con l'autenticazione basata su form e se le informazioni nell'archiviazione permanente indicano che l'utente è disconnesso, cancellare immediatamente il cookie di autenticazione e reindirizzare il browser alla pagina di accesso. Dopo aver eseguito l'accesso, aggiornare l'archiviazione in modo da riflettere che l'utente ha eseguito l'accesso. Quando si usa questo metodo, l'applicazione deve tenere traccia dello stato di accesso dell'utente e deve forzare l'inattività degli utenti a disconnettersi.

Si applica a

Vedi anche