FormsAuthentication.SignOut 方法

定義

從瀏覽器移除表單驗證票證。

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>

備註

如果 CookiesSupportedfalse ,此方法 SignOut 會從 Cookie 移除表單驗證票證資訊或 URL。 您可以使用 SignOut 方法搭配 RedirectToLoginPage 方法,將一位使用者登出,並允許不同的使用者登入。

如果您以無 Cookie 模式獨佔執行,或如果您同時支援已驗證和匿名使用者,則如果您需要特殊商務邏輯執行以移除匿名識別碼,則應該明確地控制重新導向至登入頁面。

SignOut呼叫 方法時,會呼叫 方法 endResponse ,並將 參數設為 false ,以重新 Redirect 導向至應用程式的登入頁面。 重新導向不會在目前頁面完成執行之前發生,因此可以執行其他程式碼。 如果程式碼未包含明確重新導向至另一個頁面,則會將使用者重新導向至應用程式組態檔中設定的登入頁面。

SignOut呼叫 方法只會移除表單驗證 Cookie。 Web 服務器不會儲存有效且過期的驗證票證,以供稍後比較。 如果惡意使用者取得有效的表單驗證 Cookie,這會使您的網站容易受到重新執行攻擊。 若要在使用表單驗證 Cookie 時改善安全性,您應該執行下列動作:

  • 將 屬性 false 設定 SlidingExpiration 為 ,以使用表單驗證 Cookie 的絕對到期日。 這會限制可以重新執行已攔截 Cookie 的視窗。

  • 只有透過安全通訊端層 (SSL) 發出並接受驗證 Cookie,方法是將 RequireSSL 屬性設定為 true ,並在 SSL 下執行整個網站。 RequireSSL將 屬性設定為 true 可確保 ASP.NET 永遠不會透過非 SSL 連線將驗證 Cookie 傳送至瀏覽器;不過,用戶端可能不會接受 Cookie 上的安全設定。 這表示用戶端可能會透過非 SSL 連線傳送表單驗證 Cookie,因而使其容易遭到攔截。 您可以藉由在 SSL 下執行整個網站,以防止用戶端在清除中傳送表單驗證 Cookie。

  • 在使用者登出網站時,使用伺服器上的永續性儲存體來記錄,然後使用事件之類的 PostAuthenticateRequest 應用程式事件來判斷目前的使用者是否已使用表單驗證進行驗證。 如果使用者已使用表單驗證進行驗證,而且持續性儲存體中的資訊指出使用者已登出,請立即清除驗證 Cookie,並將瀏覽器重新導向回登入頁面。 成功登入之後,更新儲存體以反映使用者已登入。 當您使用此方法時,應用程式必須追蹤使用者的登入狀態,而且必須強制閒置使用者登出。

適用於

另請參閱