驗證的 forms 項目 (ASP.NET 設定結構描述)
設定 ASP.NET 應用程式以進行自訂表單架構驗證。
<forms
name="name"
loginUrl="URL"
defaultUrl="URL"
protection="[All|None|Encryption|Validation]"
timeout="[MM]"
path="path"
requireSSL="[true|false]"
slidingExpiration="[true|false]">
enableCrossAppRedirects="[true|false]"
cookieless="[UseUri|UseCookies|AutoDetect|UseDeviceProfile]"
domain="domain name"
ticketCompatibilityMode="[Framework20|Framework40]">
<credentials>...</credentials>
</forms>
屬性和項目
下列章節會說明屬性、子項目和父項目。
屬性
屬性 |
描述 |
---|---|
cookieless |
選擇性屬性。 定義是否使用 Cookie 以及它們的行為。 這個屬性可以是下列其中一個值。
Note
在啟用 AJAX 的 ASP.NET 網站中,對 cookieless 屬性使用預設值 UseCookies。ASP.NET AJAX 用戶端指令碼程式庫不支援使用在 URL 中編碼之 Cookie 的設定。
值描述
UseCookies 指定不論裝置為何,永遠會使用 Cookie。
UseUri 指定永不使用 Cookie。
AutoDetect 指定在裝置設定檔支援 Cookie 的情況下使用 Cookie,否則就不會使用 Cookie。對於已知支援 Cookie 的桌面瀏覽器,在啟用 Cookie 時,將會使用探查機制來嘗次試使用 Cookie。如果裝置不支援 Cookie,則不會使用任何探查機制。
UseDeviceProfile 指定在瀏覽器支援 Cookie 的情況下使用 Cookie,否則就不會使用 Cookie。 對於支援 Cookie 的裝置,不會嘗試探查以判斷是否啟用 Cookie 支援。
這個屬性是 .NET Framework 2.0 版中新增的屬性。 預設值為 UseDeviceProfile.。 |
defaultUrl |
選擇性屬性。 定義在驗證後用於重新導向的預設 URL。 這個屬性是 .NET Framework 2.0 版中新增的屬性。 預設值為 "default.aspx"。 |
domain |
選擇性屬性。 指定要在外送表單驗證 Cookie 上設定的選擇性網域。 這個設定的優先權高於 httpCookies 項目中使用的網域。 這個屬性是 .NET Framework 2.0 版中新增的屬性。 預設為空字串 ("")。 |
enableCrossAppRedirects |
選擇性屬性。 指出是否將已驗證的使用者重新導向至其他 Web 應用程式中的 URL。
Note
跨應用程式執行重新導向時,您必須確定在已驗證的應用程式間有複製驗證的 forms 項目 (ASP.NET 設定結構描述) 中的數個屬性。如需詳細資訊和範例,請參閱 Forms Authentication Across Applications。
這個屬性可以是下列其中一個值。
值描述
True 指定可將已驗證的使用者重新導向至其他 Web 應用程式中的 URL。
False 指定不可將已驗證的使用者重新導向至其他 Web 應用程式中的 URL。
這個屬性是 .NET Framework 2.0 版中新增的屬性。 預設值為 False。 |
loginUrl |
選擇性屬性。 指定找不到有效的驗證 Cookie 時,將要求重新導向以進行登入的 URL。 預設值為 login.aspx。 |
name |
選擇性屬性。 指定用來驗證的 HTTP Cookie。 如果在單一伺服器執行多個應用程式,而且每個應用程式都需要唯一的 Cookie,就必須在每個應用程式的 Web.config 檔中設定 Cookie 名稱。 預設值為 ".ASPXAUTH"。 |
path |
選擇性屬性。 指定應用程式發出 Cookie 的路徑。 預設值為斜線 (/),由於多數的瀏覽器都區分大小寫,如果路徑的大小寫不符,就不會送回 Cookie。 |
protection |
選擇性屬性。 指定 Cookie 要使用的加密類型 (如果有)。 這個屬性可以是下列其中一個值。
值描述
All 指定應用程式同時使用資料驗證和加密來協助保護 Cookie。這個選項會使用設定的資料驗證演算法 (根據 machineKey 項目)。如果可以使用 Triple-DES (3DES),而且金鑰的長度至少有 48 個位元組,就會使用 Triple-DES (3DES) 來加密。All 是預設值,也是建議的值。
Encryption 指定使用 3DES 或 DES 加密 Cookie,但是不對 Cookie 執行資料驗證。以這種方式使用的 Cookie 可能會遭受到選擇純文字的攻擊。
None 對於只將 Cookie 用於個人化設定,而且安全性需求較不嚴格的網站,指定同時停用加密和驗證。您不應該以這種方式使用 Cookie;不過,這是在 .NET Framework 啟用個人化時最不耗用資源的方式。
Validation 指定驗證配置會驗證加密的 Cookie 內容在轉換時並未變更。使用 Cookie 驗證來建立 Cookie,亦即藉由使用 Cookie 資料來串連驗證金鑰、計算訊息驗證碼 (MAC) 和附加 MAC 至外送的 Cookie 中。
預設值為 All。 |
requireSSL |
選擇性屬性。 指定傳輸驗證 Cookie 是否需要 SSL 連接。 這個屬性可以是下列其中一個值。
值描述
True 指定需要 SSL 安全連接以保護使用者認證。如果為 True,ASP.NET 便會為驗證 Cookie 設定 Secure 屬性,而且除非連線使用 SSL,否則相容的瀏覽器不會傳回 Cookie。
False 指定傳輸 Cookie 不需要 SSL 連接。預設值為 False。
預設值為 False。 |
slidingExpiration |
選擇性屬性。 指定是否啟用滑動期限。 在單一工作階段 (Session) 中發生要求時,滑動期限會重設使用中驗證 Cookie 的每次要求到期時間。 這個屬性可以是下列其中一個值。
值描述
True 指定啟用滑動期限。在單一工作階段中發生後續要求時,會重新整理驗證 Cookie,並重設到期時間。
False 指定不啟用滑動期限,而 Cookie 會在原本發出的時間後的固定間隔到期。
預設為 True。 |
ticketCompatibilityMode |
選擇性屬性。 指定是否要使用 Coordinated Universal Time (UTC) 或當地時間做為表單驗證的票證到期日。 這個屬性可以有下列其中一個值。
值描述
Framework20 指定使用當地時間儲存票證到期日。
Framework40 指定使用 UTC 儲存票證到期日。
預設值是 Framework20。 |
timeout |
選擇性屬性。 指定 Cookie 過期的時間,以整數分鐘為單位。 如果 SlidingExpiration 屬性為 true,timeout 屬性為遊值 (Sliding Value),則會在接收到最後要求之後的指定分鐘數過期。 為了避免妨礙效能,以及避免對開啟 Cookie 警告的使用者發出多重瀏覽器警告,當超過指定時間的一半時就會更新 Cookie。 這可能會導致精確度的喪失。 預設為 "30" (30 分鐘)。
Note
在 ASP.NET V1.1 下的持續性 Cookie 不會逾時,不管其 timeout 屬性的設定為何。不過,在使用 ASP.NET V2.0 時,其持續性 Cookie 會根據 timeout 屬性的設定值而發生逾時。
|
子項目
子標記 |
描述 |
---|---|
credentials |
允許選擇性地定義組態檔中的名稱和密碼認證。 您也可以實作自訂密碼配置以使用外部來源 (例如資料庫) 來控制驗證。 |
父項目
項目 |
描述 |
---|---|
configuration |
指定 Common Language Runtime 和 .NET Framework 應用程式所使用之每個組態檔中需要的根項目 (Root Element)。 |
system.web |
指定組態檔中 ASP.NET 組態設定的根項目 (Root Element),並包含會設定 ASP.NET Web 應用程式以及控制這些應用程式之行為的組態項目。 |
authentication |
設定用於識別檢視 ASP.NET 應用程式使用者的 ASP.NET 驗證配置。 |
備註
forms 項目會設定 ASP.NET 應用程式,以進行自訂表單架構驗證。 如果在單一伺服器執行多個應用程式,則必須在每個應用程式的 Web.config 檔中設定 forms 項目的屬性。 如需詳細資訊,請參閱 Forms Authentication Across Applications。
當您在 URI 中傳送表單驗證票證時,可能會超過 URI 的最大值。 如果匿名識別票證、表單驗證票證、工作階段 ID 和使用者資料的組合大於允許的 UI 最大長度,則要求會失敗,錯誤為 400-不正確的要求。
預設組態
下列預設 forms 項目不會明確地設定在 Machine.config 檔案或根 Web.config 檔案中。 不過,這是 .NET Framework 2.0 版中應用程式所傳回的預設組態。
<forms
name=".ASPXAUTH"
loginUrl="login.aspx"
defaultUrl="default.aspx"
protection="All"
timeout="30"
path="/"
requireSSL="false"
slidingExpiration="true"
cookieless="UseDeviceProfile" domain=""
enableCrossAppRedirects="false">
<credentials passwordFormat="SHA1" />
</forms>
下列預設 forms 項目是在 .NET Framework 1.1 版中的 Machine.config 檔案中設定。
<forms
name=".ASPXAUTH"
loginUrl="login.aspx"
protection="All"
timeout="30"
path="/"
requireSSL="false"
slidingExpiration="true">
<credentials passwordFormat="SHA1"></credentials>
</forms>
下列預設 forms 項目是在 .NET Framework 1.0 版中的 Machine.config 檔案中設定。
<forms
name=".ASPXAUTH"
loginUrl="login.aspx"
protection="All"
timeout="30"
path="/" >
<credentials passwordFormat="SHA1"></credentials>
</forms>
範例
下列程式碼範例會示範如何設定網站進行表單架構驗證、指定從用戶端傳輸登入資訊的 Cookie 名稱,以及指定初始驗證失敗時要使用的登入網頁名稱。
<configuration>
<system.web>
<authentication mode="Forms">
<forms
name="401kApp"
loginUrl="/login.aspx"
cookieless="AutoDetect"
defaultUrl="myCustomLogin.aspx">
<credentials passwordFormat = "SHA1">
<user name="UserName"
password="07B7F3EE06F278DB966BE960E7CBBD103DF30CA6"/>
</credentials>
</forms>
</authentication>
</system.web>
</configuration>
項目資訊
組態區段處理常式 |
|
組態成員 |
|
可設定的位置 |
Machine.config 根層次的 Web.config 應用程式層級的 Web.config |
需求 |
Microsoft Internet Information Services (IIS) 5.0、5.1 或 6.0 版 .NET Framework 1.0、1.1 或 2.0 版 Microsoft Visual Studio 2003 或 Visual Studio 2005 |
請參閱
工作
How to: Configure Specific Folders Using Location Settings
How to: Lock ASP.NET Configuration Settings
參考
authentication 項目 (ASP.NET 設定結構描述)
驗證表單的 credentials 項目 (ASP.NET 設定結構描述)
system.web 項目 (ASP.NET 設定結構描述)
驗證的 passport 項目 (ASP.NET 設定結構描述)
概念
Forms Authentication Across Applications
ASP.NET Configuration File Hierarchy