FormsAuthentication.SignOut Метод

Определение

Удаляет из браузера билет проверки подлинности с помощью форм.

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

Примеры

Следующий пример кода очищает файл cookie проверки подлинности форм с помощью SignOut метода и перенаправляет пользователя на страницу входа с помощью RedirectToLoginPage метода.

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

Комментарии

SignOutМетод удаляет данные билета проверки подлинности форм из файла cookie или URL-адреса, если CookiesSupported имеет значение false . Метод можно использовать SignOut в сочетании с RedirectToLoginPage методом для регистрации одного пользователя и предоставления другому пользователю возможности входа.

Если вы выполняете монопольный режим без поддержки файлов cookie или поддерживаете проверку подлинности и анонимных пользователей, следует явно управлять перенаправлением на страницу входа, если требуется специальная бизнес-логика для выполнения в результате удаления анонимного идентификатора.

При SignOut вызове метода перенаправление на страницу входа приложения осуществляется путем вызова Redirect метода с endResponse параметром, для которого задано значение false . Перенаправление не выполняется до завершения текущей страницы, поэтому можно запустить дополнительный код. Если код не содержит явного перенаправления на другую страницу, пользователь перенаправляется на страницу входа, настроенную в файле конфигурации приложения.

При вызове SignOut метода удаляется только файл cookie проверки подлинности на формах. Веб-сервер не сохраняет действительные и просроченные билеты проверки подлинности для последующего сравнения. Это делает сайт уязвимым для атаки на воспроизведение, если пользователь-злоумышленник получает действительный файл cookie проверки подлинности форм. Для повышения безопасности при использовании файла cookie проверки подлинности с помощью форм необходимо выполнить следующие действия.

  • Используйте Абсолютный срок действия для файлов cookie проверки подлинности форм, задав SlidingExpiration для свойства значение false . Это ограничивает окно, в котором можно воспроизвести перехваченный файл cookie.

  • Выдача и прием файлов cookie для проверки подлинности только по SSL (SSL) путем присвоения RequireSSL свойству значения true и путем запуска всего веб-сайта по протоколу SSL. если задать RequireSSL для свойства значение true , то ASP.NET никогда не будет передавать файл cookie проверки подлинности в браузер по соединению, отличному от SSL, однако клиент может не учитывать параметры безопасности для файла cookie. Это означает, что клиент может отправить файл cookie проверки подлинности с помощью форм через соединение, не поддерживающее SSL, тем самым оставляя его уязвимым для захвата. Можно запретить клиенту отправлять файл cookie проверки подлинности с помощью форм на очистку, запустив весь веб-сайт по протоколу SSL.

  • Используйте постоянное хранилище на сервере для записи при выходе пользователя из системы с веб-сайта, а затем используйте событие приложения, например Event, PostAuthenticateRequest чтобы определить, прошел ли текущий пользователь проверку подлинности с помощью форм. Если пользователь прошел проверку подлинности с помощью форм, и если информация в постоянном хранилище указывает, что пользователь вышел из системы, немедленно очистите файл cookie проверки подлинности и перенаправьте браузер обратно на страницу входа. После успешного входа обновите хранилище, чтобы оно отражало, что пользователь вошел в систему. При использовании этого метода приложение должно относить состояние вошедшего в систему пользователя и принудительно выполнять выход из режима бездействия пользователей.

Применяется к

См. также раздел