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 удаляет сведения о запросе проверки подлинности forms из файла cookie или URL-адреса, если CookiesSupported имеет значение false
. Вы можете использовать метод в сочетании SignOut с методом , RedirectToLoginPage чтобы выйти из системы одного пользователя и разрешить вход другому пользователю.
Если вы работаете исключительно в режиме без файлов cookie или поддерживаете как прошедших проверку подлинности, так и анонимных пользователей, следует явно управлять перенаправлением на страницу входа, если требуется выполнение специальной бизнес-логики в результате удаления анонимного идентификатора.
При вызове SignOut метода выполняется перенаправление на страницу входа приложения путем вызова Redirect метода с параметром endResponse
, равным false
. Перенаправление не выполняется до тех пор, пока текущая страница не завершит выполнение, поэтому можно выполнить дополнительный код. Если код не содержит явного перенаправления на другую страницу, пользователь перенаправляется на страницу входа, настроенную в файле конфигурации приложения.
SignOut Вызов метода удаляет только файл cookie проверки подлинности форм. Веб-сервер не хранит действительные и просроченные билеты проверки подлинности для последующего сравнения. Это делает ваш сайт уязвимым для атаки воспроизведения, если злоумышленник получает допустимый файл cookie проверки подлинности на основе форм. Чтобы повысить безопасность при использовании файла cookie проверки подлинности на основе форм, выполните следующие действия.
Используйте абсолютный срок действия для файлов cookie проверки подлинности форм, задав SlidingExpiration для свойства значение
false
. Это ограничивает окно, в котором можно воспроизвести захваченный файл cookie.Создавай и принимаю файлы cookie проверки подлинности только по протоколу SSL, задав свойству RequireSSL значение и запустив весь веб-сайт по протоколу
true
SSL. Задание свойству RequireSSL значенияtrue
гарантирует, что ASP.NET никогда не будет отправлять в браузер файл cookie проверки подлинности через подключение, отличное от SSL, однако клиент может не учитывать безопасный параметр в файле cookie. Это означает, что клиент может отправить файл cookie проверки подлинности форм через подключение без SSL, что делает его уязвимым для перехвата. Вы можете запретить клиенту отправлять файл cookie проверки подлинности форм в файле clear, запустив весь веб-сайт в режиме SSL.Используйте постоянное хранилище на сервере для записи времени выхода пользователя из веб-сайта, а затем используйте событие приложения, например PostAuthenticateRequest событие, чтобы определить, прошел ли текущий пользователь проверку подлинности с помощью форм. Если пользователь прошел проверку подлинности с помощью форм и если сведения в постоянном хранилище указывают на то, что пользователь вышел из системы, немедленно очистите файл cookie проверки подлинности и перенаправьте браузер обратно на страницу входа. После успешного входа обновите хранилище, чтобы отразить, что пользователь вошел в систему. При использовании этого метода приложение должно отслеживать состояние входа пользователя и принудительно выходить из системы бездействующего пользователя.