首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 Forms Authentication 深度解析:運作機制、IIS 整合與 FormsAuthenticationModule

     編輯:關於ASP.NET

Forms Authentication 是 ASP.NET 應用程式最常用的驗證方式。本文剖析其核心運作流程:從 IIS 匿名驗證、FormsAuthenticationModule 管線處理、驗證票證與 Cookie 管理,到 web.config 完整設定參數。

雙層驗證架構

  1. IIS 層:建立 Windows Token 代表用戶。若設為匿名驗證,使用 IUSR_MACHINE 帳戶。Token 傳遞給 ASP.NET。
  2. ASP.NET 層:由 authentication mode="Forms" 指定使用 FormsAuthenticationModule(HTTP 模組)處理後續驗證邏輯。

重要:Forms Authentication 不依賴 IIS 驗證,IIS 應設為「匿名存取」,讓 ASP.NET 完全掌控驗證流程。

Forms Authentication 完整流程

  1. 用戶請求受保護頁面(如 Default.aspx)。
  2. FormsAuthenticationModule.OnAuthenticateRequest 檢查 Cookie/查詢字串中的驗證票證。
  3. 若無有效票證 → 導向 loginUrl(預設 Login.aspx)。
  4. 登入頁驗證憑證(對 Membership Provider 或自訂邏輯)。
  5. 驗證成功 → FormsAuthentication.SetAuthCookie 或 RedirectFromLoginPage 建立加密票證 Cookie。
  6. 用戶重導向原請求頁面,後續請求自動攜帶 Cookie 通過驗證。

web.config 完整設定參數

<system.web>
  <authentication mode="Forms">
    <forms
      loginUrl="Login.aspx"
      protection="All"           // 加密與驗證:All/Encryption/Validation/None
      timeout="30"               // 票證逾時分鐘數
      name=".ASPXAUTH"           // Cookie 名稱
      path="/"                   // Cookie 路徑
      requireSSL="false"         // 僅 HTTPS 傳輸
      slidingExpiration="true"   // 活動時重設逾時
      defaultUrl="default.aspx"  // 登入後預設導向
      cookieless="UseDeviceProfile" // UseDeviceProfile/AutoDetect/UseCookies/UseUri
      enableCrossAppRedirects="false" // 跨應用程式重導向
    />
  </authentication>
</system.web>

無 Cookie Forms Authentication (Cookieless)

設定 cookieless="UseUri" 將票證嵌入 URL:/ (S(abc123))/Default.aspx。適用於不支援 Cookie 的裝置,但需注意 URL 分享導致的安全性風險(Session Hijacking)。

FormsAuthenticationModule 關鍵方法

  • SetAuthCookie(userName, persistCookie):建立驗證 Cookie。
  • RedirectFromLoginPage(userName, persistCookie):建立 Cookie 並導向原頁。
  • SignOut():清除 Cookie,結束驗證。
  • GetAuthCookie():取得 HttpCookie 物件供自訂處理。
  • Decrypt/Encrypt:票證加解密(機器金鑰保護)。

掌握 Forms Authentication 完整機制,能靈活處理單一登入 (SSO)、跨應用程式驗證、行動裝置相容等進階需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved