共用方式為


表單驗證公用程式

更新:2007 年 11 月

若要管理表單驗證,您可以使用 FormsAuthentication 類別的靜態方法。下表列出各種方法。

方法

描述

Authenticate

嘗試驗證已設定的認證存放區內的認證,需給定提供的認證。

Decrypt

傳回 FormsAuthenticationTicket 類別的執行個體,指定取自 HTTP Cookie 的加密驗證票證。

Encrypt

指定 FormsAuthenticationTicket,產生包含加密驗證票證 (適用於 HTTP Cookie 中) 的字串。

GetAuthCookie

擷取加密驗證 Cookie 做為 HttpCookie 執行個體。Cookie 不會加入 Cookies 集合。

GetRedirectUrl

針對造成重新導向至登入頁面的要求,傳回重新導向的 URL。

HashPasswordForStoringInConfigFile

指定識別雜湊類型的密碼和字串,產生適用儲存在組態檔中的雜湊密碼。

Initialize

讀取目前應用程式的組態設定,並取得 Cookie 值和加密值,以初始化 FormsAuthentication 類別。

RedirectFromLoginPage

將已驗證的使用者重新導向至原始要求的 URL。

RenewTicketIfOld

更新 FormsAuthenticationTicket 的滑動期限 (Sliding Expiration)。

SetAuthCookie

建立驗證票證,並將其附加到輸出回應的 Cookie 集合。

SignOut

將驗證 Cookie 或 URL 文字設定為空值,以移除驗證票證。如此會移除持久性和工作階段 Cookie。

重要事項:
雖然 SignOut 方法會從已驗證瀏覽器工作階段清除票證,但是應用程式仍然可能會很容易受到「探查」(Sniffed) 驗證票證的不適當來源所發動的重播攻擊。如需使用表單驗證減少重播攻擊的資訊,請參閱 SignOut

下表列出有助於管理表單驗證票證的屬性。

屬性

描述

FormsCookieName

取得目前應用程式的 Cookie 名稱。

FormsCookiePath

取得目前應用程式的 Cookie 路徑。

CookiesSupported

取得表示應用程式是否設定為支援 Cookieless 表單驗證的值。

CookieMode

取得表示應用程式是否針對 Cookieless 表單驗證進行設定的值。

CookieDomain

取得表單驗證 Cookie 的定義域值。

DefaultUrl

取得如果不指定重新導向‏ URL,表單驗證則會重新導向的 URL。

LoginUrl

取得表單驗證重新導向的登入頁面 URL 值。

RequireSSL

取得表示 Cookie 是否必須使用 Secure Sockets Layer (SSL) 傳輸的值。

SlidingExpiration

取得一個指示是否啟用變動到期的值。

EnableCrossAppRedirects

取得表示在表單驗證票證未尚儲存在 Cookie 中時,是否可以將已驗證的使用者重新導向至其他 Web 應用程式中的 URL。

您可以使用 FormsAuthentication 類別的方法自訂表單驗證的運作方式。您也可以在登入網頁處理常式中使用它們,避免必須撰寫重新導向的程式碼。下列程式碼範例示範驗證使用者並重新導向至要求網頁的 ASP.NET Web 網頁。

<html>
<head>
<script language="VB" runat=server>
    Sub SubmitBtn_Click(Source As Object, e As EventArgs)
        ' Try to authenticate credentials supplied by user.
        If FormsAuthentication.Authenticate _
                (UserName.Value, UserPassword.Value) Then
            Dim ticket As New FormsAuthenticationTicket _
                (UserName.Value, False, 5000)
            FormsAuthentication.RedirectFromLoginPage _
                (UserName.Value, Persist.Checked)
        End If
    End Sub
</script>
</head>

<body>
<form method=post runat=server>
    <table>
        <tr>
            <td>Name:</td>
            <td><input type="text" id="UserName" runat=server/>
        </tr>
        <tr>
            <td>Password:</td>
            <td><input type="password" id="UserPassword" runat=server/>
            </td>
        </tr>
    </table>
    <input type="checkbox" id="Persist" runat=server/>
    <!-- Use persistent cookie -->
    <br>
    <input type="submit" OnServerClick="SubmitBtn_Click" runat=server/>
</form>
</body>
</html>
<html>
<head>
<script language="C#" runat=server>
    void SubmitBtn_Click(Object Source, EventArgs e)
    {
        // Try to authenticate credentials supplied by user.
        if (FormsAuthentication.Authenticate(UserName.Value, 
                UserPassword.Value))
        {
            FormsAuthenticationTicket ticket = new 
                FormsAuthenticationTicket(UserName.Value, false, 5000);
                  
            FormsAuthentication.RedirectFromLoginPage(UserName.Value,
                Persist.Checked);
        }
    }
</script>
</head>

<body>

<form method=post runat=server>
    <table>
        <tr>
            <td>Name:</td>
            <td><input type="text" id="UserName" runat=server/></td>
        </tr>
        <tr>
            <td>Password:</td>
            <td><input type="password" id="UserPassword" runat=server/>
            </td>
        </tr>
    </table>
    <input type="checkbox" id="Persist" runat=server/>
    <!-- Use persistent cookie. -->
    <br>
    <input type="submit" OnServerClick="SubmitBtn_Click" runat=server/>
</form>
</body>
</html>

需要更詳細控制 HTTP Cookie 屬性的應用程式,可以建構票證並在自訂程式碼中執行重新導向。在這些情況中,您應該使用 FormsAuthentication 類別的加密方法加密驗證票證。

請參閱

參考

FormsAuthentication

FormsAuthenticationTicket

HttpCookie

其他資源

ASP.NET Web 應用程式安全性

表單驗證提供者