FormsAuthentication.SignOut 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
從瀏覽器移除表單驗證票證。
public:
static void SignOut();
public static void SignOut ();
static member SignOut : unit -> unit
Public Shared Sub SignOut ()
範例
下列程式代碼範例會使用 SignOut 方法來清除窗體驗證Cookie,並使用方法將使用者重新導向至登入頁面 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>
備註
如果 是 false
,此方法SignOut會從 Cookie 移除窗體驗證票證資訊,或 URL。CookiesSupported 您可以使用 SignOut 方法搭配 RedirectToLoginPage 方法,將一個用戶註銷,並允許不同的使用者登入。
如果您在 Cookieless 模式中以獨佔方式執行,或同時支援已驗證和匿名使用者,則如果您需要特殊商業規則執行以移除匿名標識碼,就應該明確地控制重新導向至登入頁面。
SignOut呼叫 方法時,呼叫 方法時,會呼叫 方法endResponse
,並將 參數設定為 false
,以重新Redirect導向至應用程式的登入頁面。 重新導向不會在目前頁面完成執行之前進行,因此可以執行其他程序代碼。 如果程式代碼不包含明確重新導向至另一個頁面,則會將使用者重新導向至應用程式組態檔中設定的登入頁面。
SignOut呼叫 方法只會移除窗體驗證 Cookie。 Web 伺服器不會儲存有效且過期的驗證票證,以供日後比較。 如果惡意使用者取得有效的窗體驗證 Cookie,這會使您的網站容易遭受重新執行攻擊。 若要在使用窗體驗證 Cookie 時改善安全性,您應該執行下列動作:
將屬性設定為
false
,以使用窗體驗證 Cookie 的SlidingExpiration絕對到期日。 這會限制可以重新執行已攔截 Cookie 的視窗。僅透過安全套接字層 (SSL) 發出並接受驗證 Cookie,方法是將 屬性設定 RequireSSL 為
true
,並在 SSL 下執行整個網站。 RequireSSL將屬性設定為true
確保 ASP.NET 永遠不會透過非 SSL 連線將驗證 Cookie 傳送至瀏覽器;不過,用戶端可能不會接受 Cookie 上的安全設定。 這表示用戶端可能會透過非 SSL 連線傳送窗體驗證 Cookie,因而使其容易遭到攔截。 您可以藉由在 SSL 下執行整個網站,防止用戶端在清除中傳送窗體驗證 Cookie。在伺服器上使用永續性記憶體,在使用者註銷網站時記錄,然後使用事件之類的 PostAuthenticateRequest 應用程式事件來判斷目前使用者是否使用窗體驗證進行驗證。 如果使用者已使用窗體驗證進行驗證,且持續性記憶體中的資訊指出使用者已註銷,請立即清除驗證 Cookie,並將瀏覽器重新導向回登入頁面。 成功登入之後,更新記憶體以反映使用者已登入。 當您使用此方法時,您的應用程式必須追蹤使用者的登入狀態,而且必須強制閑置使用者註銷。