ASP.NET Forms 身份验证概述

更新:2007 年 11 月

Forms 身份验证使您可以使用自己的代码对用户进行身份验证,然后将身份验证标记保留在 Cookie 或页的 URL 中。Forms 身份验证通过 FormsAuthenticationModule 类参与到 ASP.NET 页的生命周期中。可以通过 FormsAuthentication 类访问 Forms 身份验证信息和功能。

若要使用 Forms 身份验证,可以创建一个登录页。该登录页既可收集用户的凭据,又包含用于对这些凭据进行身份验证的代码。通常,可以对应用程序进行配置,以便在用户尝试访问受保护的资源(如要求身份验证的页)时,将请求重定向到登录页。如果用户的凭据有效,则可以调用 FormsAuthentication 类的方法,以使用适当的身份验证票证 (Cookie) 将请求重定向回到最初请求的资源。如果不需要进行重定向,则只需获取 Forms 身份验证 Cookie 或对其进行设置即可。在后续的请求中,用户的浏览器会随同请求一起传递相应的身份验证 Cookie,从而绕开登录页。

通过使用 authentication 配置元素,可以对 Forms 身份验证进行配置。最简单的情况是使用登录页。在配置文件中,指定一个 URL 以将未经身份验证的请求重定向到登录页。然后在 Web.config 文件或单独的文件中定义有效的凭据。下面的示例演示配置文件的一部分,其中为 Authenticate 方法指定了登录页和身份验证凭据。密码已经使用 HashPasswordForStoringInConfigFile 方法进行加密。

<authentication mode="Forms">
   <forms name="SavingsPlan" loginUrl="/Login.aspx">
      <credentials passwordFormat="SHA1">
         <user name="Kim"
               password="07B7F3EE06F278DB966BE960E7CBBD103DF30CA6"/>
         <user name="John"
               password="BA56E5E0366D003E98EA1C7F04ABF8FCB3753889"/>
      </credentials>
   </forms>
</authentication>

在身份验证成功之后,FormsAuthenticationModule 模块会将 User 属性的值设置为对经过身份验证的用户的引用。下面的代码示例演示如何以编程方式读取经过 Forms 身份验证的用户的标识。

Dim authUser2 As String = User.Identity.Name
String authUser2 = User.Identity.Name;

Forms 身份验证、ASP.NET 成员资格和登录控件

使用 Forms 身份验证的简便方法是,使用 ASP.NET 成员资格和 ASP.NET 登录控件。ASP.NET 成员资格可让您存储和管理用户信息,并包含对用户进行身份验证的方法。ASP.NET 登录控件与 ASP.NET 成员资格一起使用,将提示用户输入凭据、验证用户、恢复或更换密码等操作的逻辑进行封装。实际上,ASP.NET 成员资格和 ASP.NET 登录控件在 Forms 身份验证之上提供了一个抽象层。这些功能取代了使用 Forms 身份验证时通常必须完成的大部分甚至全部的工作。有关更多信息,请参见 使用成员资格管理用户ASP.NET 登录控件概述

Forms 身份验证和身份验证服务

通过使用 ASP.NET 身份验证服务,还可以作为 Windows Communication Framework (WCF) 服务来访问 Forms 身份验证。身份验证服务使您能够从可以发送和使用 SOAP 格式的消息的任何应用程序使用 Forms 身份验证。身份验证服务接受用户凭据并返回 Forms 身份验证 Cookie。

例如,您可以从不是使用 .NET Framework 开发的应用程序登录用户。有关更多信息,请参见 Windows Communication Foundation 身份验证服务概述

请参见

概念

ASP.NET 配置概述

其他资源

ASP.NET Web 应用程序安全性

Forms 身份验证提供程序