Freigeben über


FormsAuthentication.SignOut Methode

Definition

Entfernt das Formularauthentifizierungsticket aus dem Browser.

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

Beispiele

Im folgenden Codebeispiel wird das Formularauthentifizierungscookies mithilfe der SignOut Methode gelöscht und der Benutzer mithilfe der RedirectToLoginPage Methode auf die Anmeldeseite umgeleitet.

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

Hinweise

Mit der SignOut Methode werden die Formularauthentifizierungsticketinformationen aus dem Cookie oder der URL entfernt, sofern CookiesSupported vorhanden false. Sie können die Methode in Verbindung mit der SignOutRedirectToLoginPage Methode verwenden, um einen Benutzer abzumelden und einem anderen Benutzer die Anmeldung zu ermöglichen.

Wenn Sie ausschließlich im cookielosen Modus ausgeführt werden oder authentifizierte und anonyme Benutzer unterstützen, sollten Sie die Umleitung explizit auf die Anmeldeseite steuern, wenn Sie eine spezielle Geschäftslogik zum Entfernen des anonymen Bezeichners benötigen.

Wenn die SignOut Methode aufgerufen wird, wird eine Umleitung zur Anmeldeseite der Anwendung vorgenommen, indem die Redirect Methode aufgerufen wird, auf die der endResponse Parameter festgelegt falseist. Die Umleitung wird erst ausgeführt, wenn die aktuelle Seite ausgeführt wurde, sodass zusätzlicher Code ausgeführt werden kann. Wenn der Code keine explizite Umleitung zu einer anderen Seite enthält, wird der Benutzer zur Anmeldeseite umgeleitet, die in der Konfigurationsdatei der Anwendung konfiguriert ist.

Durch Aufrufen der SignOut Methode wird nur das Formularauthentifizierungscookies entfernt. Der Webserver speichert keine gültigen und abgelaufenen Authentifizierungstickets für einen späteren Vergleich. Dadurch ist Ihre Website anfällig für einen Replay-Angriff, wenn ein böswilliger Benutzer ein gültiges Formularauthentifizierungscookies abruft. Um die Sicherheit bei verwendung eines Formularauthentifizierungscookies zu verbessern, sollten Sie die folgenden Schritte ausführen:

  • Verwenden Sie den absoluten Ablauf für Formularauthentifizierungscookies, indem Sie die SlidingExpiration Eigenschaft auf false. Dies schränkt das Fenster ein, in dem ein entführertes Cookie wiedergegeben werden kann.

  • Stellen Sie nur Authentifizierungscookies über SSL (Secure Sockets Layer) aus, indem Sie die RequireSSL Eigenschaft auf true und durch Ausführen der gesamten Website unter SSL festlegen. Durch Festlegen der RequireSSL Eigenschaft wird true sichergestellt, dass ASP.NET niemals ein Authentifizierungscookies über eine nicht-SSL-Verbindung an den Browser sendet. Der Client berücksichtigt jedoch möglicherweise nicht die sichere Einstellung auf dem Cookie. Dies bedeutet, dass der Client möglicherweise das Formularauthentifizierungscookies über eine nicht-SSL-Verbindung sendet, sodass er anfällig für Entführer bleibt. Sie können verhindern, dass ein Client das Formularauthentifizierungscookies im Klaren sendet, indem Sie die gesamte Website unter SSL ausführen.

  • Verwenden Sie beständigen Speicher auf dem Server, um aufzuzeichnen, wann sich ein Benutzer bei der Website abmeldet, und verwenden Sie dann ein Anwendungsereignis wie PostAuthenticateRequest z. B. ein Ereignis, um zu bestimmen, ob der aktuelle Benutzer mit der Formularauthentifizierung authentifiziert wurde. Wenn der Benutzer bei der Formularauthentifizierung authentifiziert wurde und die Informationen im beständigen Speicher darauf hindeuten, dass der Benutzer abgemeldet ist, löschen Sie sofort das Authentifizierungscookies, und leiten Sie den Browser zurück zur Anmeldeseite um. Aktualisieren Sie nach einer erfolgreichen Anmeldung den Speicher, um anzuzeigen, dass der Benutzer angemeldet ist. Wenn Sie diese Methode verwenden, muss Ihre Anwendung den angemeldeten Status des Benutzers nachverfolgen und die Abmeldung von Benutzern im Leerlauf erzwingen.

Gilt für:

Weitere Informationen