FormsAuthentication.SignOut Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Usuwa bilet uwierzytelniania formularzy z przeglądarki.
public:
static void SignOut();
public static void SignOut ();
static member SignOut : unit -> unit
Public Shared Sub SignOut ()
Przykłady
Poniższy przykład kodu czyści plik cookie uwierzytelniania formularzy przy użyciu SignOut metody i przekierowuje użytkownika do strony logowania przy użyciu RedirectToLoginPage metody .
<%@ 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>
Uwagi
Metoda SignOut usuwa informacje o bilecie uwierzytelniania formularzy z pliku cookie lub adresu URL, jeśli CookiesSupported to false
. Możesz użyć metody w połączeniu SignOutRedirectToLoginPage z metodą , aby zarejestrować jednego użytkownika i zezwolić innego użytkownika na logowanie.
Jeśli korzystasz wyłącznie z trybu bez plików cookie lub jeśli obsługujesz zarówno uwierzytelnionych, jak i anonimowych użytkowników, musisz jawnie kontrolować przekierowanie do strony logowania, jeśli potrzebujesz specjalnej logiki biznesowej do wykonania w wyniku usunięcia identyfikatora anonimowego.
Po wywołaniu SignOut metody następuje przekierowanie do strony logowania aplikacji przez wywołanie Redirect metody z parametrem ustawionym endResponse
na false
wartość . Przekierowanie nie odbywa się do momentu zakończenia wykonywania bieżącej strony, więc można uruchomić dodatkowy kod. Jeśli kod nie zawiera jawnego przekierowania do innej strony, użytkownik zostanie przekierowany do strony logowania skonfigurowanej w pliku konfiguracji aplikacji.
SignOut Wywołanie metody usuwa tylko plik cookie uwierzytelniania formularzy. Serwer sieci Web nie przechowuje prawidłowych i wygasłych biletów uwierzytelniania na potrzeby późniejszego porównania. Dzięki temu witryna jest podatna na atak powtarzany, jeśli złośliwy użytkownik uzyska prawidłowy plik cookie uwierzytelniania formularzy. Aby zwiększyć bezpieczeństwo podczas korzystania z pliku cookie uwierzytelniania formularzy, należy wykonać następujące czynności:
Użyj bezwzględnego wygaśnięcia plików cookie uwierzytelniania formularzy, ustawiając SlidingExpiration właściwość na
false
. Ogranicza to okno, w którym można odtworzyć porwany plik cookie.Wystawiaj i akceptują tylko pliki cookie uwierzytelniania za pośrednictwem protokołu SSL (Secure Sockets Layer), ustawiając RequireSSL właściwość na
true
i uruchamiając całą witrynę sieci Web w obszarze SSL. RequireSSL Ustawienie właściwości w taki sposób, aby zagwarantowaćtrue
, że ASP.NET nigdy nie wyśle pliku cookie uwierzytelniania do przeglądarki za pośrednictwem połączenia bez protokołu SSL, jednak klient może nie przestrzegać bezpiecznego ustawienia w pliku cookie. Oznacza to, że klient może wysłać plik cookie uwierzytelniania formularzy za pośrednictwem połączenia bez protokołu SSL, pozostawiając go podatnym na przejęcie. Możesz uniemożliwić klientowi wysyłanie pliku cookie uwierzytelniania formularzy w zwykły sposób, uruchamiając całą witrynę sieci Web w obszarze SSL.Użyj magazynu trwałego na serwerze, aby zarejestrować, gdy użytkownik wyloguje się z witryny sieci Web, a następnie użyj zdarzenia aplikacji, takiego jak PostAuthenticateRequest zdarzenie, aby określić, czy bieżący użytkownik został uwierzytelniony za pomocą uwierzytelniania formularzy. Jeśli użytkownik został uwierzytelniony przy użyciu uwierzytelniania formularzy, a informacje w magazynie trwałym wskazują, że użytkownik jest wylogowany, natychmiast wyczyść plik cookie uwierzytelniania i przekierowuj przeglądarkę z powrotem na stronę logowania. Po pomyślnym zalogowaniu zaktualizuj magazyn, aby odzwierciedlić, że użytkownik jest zalogowany. W przypadku korzystania z tej metody aplikacja musi śledzić stan zalogowanego użytkownika i wymusić wylogowanie użytkowników bezczynnych.