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 身份验证服务概述。