成员资格介绍

更新:2007 年 11 月

ASP.NET 成员资格为您提供了一种验证和存储用户凭据的内置方法。因此,ASP.NET 成员资格可帮助您管理网站中的用户身份验证。您可以将 ASP.NET 成员资格与 ASP.NET Forms 身份验证或 ASP.NET 登录控件一起使用以创建一个完整的用户身份验证系统。

ASP.NET 成员资格支持下列功能:

  • 创建新用户和密码。

  • 将成员资格信息(用户名、密码和支持数据)存储在 Microsoft SQL Server、Active Directory 或其他数据存储区。

  • 对访问站点的用户进行身份验证。可以以编程方式验证用户,也可以使用 ASP.NET 登录控件创建一个只需很少代码或无需代码的完整身份验证系统。

  • 管理密码,包括创建、更改和重置密码。根据您选择的成员资格选项不同,成员资格系统还可以提供一个使用用户提供的问题和答案的自动密码重置系统。

  • 公开经过身份验证的用户的唯一标识,您可以在您自己的应用程序中使用该标识,也可以将该标识与 ASP.NET 个性化设置和角色管理(授权)系统集成。

  • 指定自定义成员资格提供程序,这使您可以改为用自己的代码管理成员资格及在自定义数据存储区中维护成员资格数据

成员资格、角色和用户配置文件

虽然成员资格是 ASP.NET 中用来进行身份验证的独立功能,但它可以与 ASP.NET 角色管理集成以便为站点提供授权服务。成员资格还可以与用户配置文件集成,以提供可为单个用户量身订做的特定于应用程序的自定义。有关详细信息,请参见 使用角色管理授权ASP.NET 配置文件属性概述

成员资格的工作原理

若要使用成员资格,必须首先为站点配置成员资格。主要分为下面的步骤:

  1. 将成员资格选项指定为网站配置的一部分。默认情况下,成员资格处于启用状态。还可以指定要使用哪个成员资格提供程序。(实际上,这意味着指定要存储成员资格信息的数据库的类型。)默认提供程序使用 Microsoft SQL Server 数据库。还可以选择使用 Active Directory 存储成员资格信息,或者可以指定自定义提供程序。有关可以在 ASP.NET 应用程序的 Web.config 文件中指定的成员资格配置选项的信息,请参见配置 ASP.NET 应用程序以使用成员资格

  2. 将应用程序配置为使用 Forms 身份验证(与 Windows 或 Passport 身份验证不同)。通常指定应用程序中的某些页或文件夹受到保护,并只能由经过身份验证的用户访问。

  3. 为成员资格定义用户帐户。可以通过多种方式执行此操作。可以使用网站管理工具,该工具提供了一个用于创建新用户的类似向导的界面。或者,可以创建一个“新用户”ASP.NET 网页,在该网页中收集用户名和密码(及电子邮件地址(可选)),然后使用一个名为 CreateUser 的成员资格函数在成员资格系统中创建一个新用户。

现在,您就可以使用成员资格对应用程序中的用户进行身份验证。大多数情况下,您将需要提供一个登录窗体,它可能是一个单独页或主页上的一个专用区域。可以使用 ASP.NET TextBox 控件手动创建登录窗体,也可以使用 ASP.NET 登录控件。由于您已将应用程序配置为使用 Forms 身份验证,因此在未经验证的用户请求一个受保护的页面时,ASP.NET 将自动显示登录页。

yh26yfzy.alert_note(zh-cn,VS.90).gif说明:

ASP.NET 登录控件(LoginLoginViewLoginStatusLoginNamePasswordRecovery)实际上封装了提示用户输入凭据及验证成员资格系统中的凭据所需的所有逻辑。

如果使用登录控件,它们将自动使用成员资格系统验证用户。如果已手动创建了一个登录窗体,可以提示用户输入用户名和密码,然后调用 ValidateUser 方法执行验证。在验证用户后,可以使用 Forms 身份验证保留有关用户的信息(例如,如果用户的浏览器接受 Cookie 使用加密 Cookie)。登录控件可自动执行此任务。如果已手动创建了一个登录窗体,可以调用 FormsAuthentication 类的方法来创建 Cookie 并将它写入用户的计算机。如果用户忘记了他或她的密码,则登录页可以调用成员资格函数,帮助用户找到密码或创建一个新密码。

用户每次请求其他受保护的页面时,ASP.NET Forms 身份验证都会检查该用户是否经过身份验证,然后相应地允许该用户查看该页面或将用户重定向到登录页。默认情况下,身份验证 Cookie 在用户会话期间一直有效。

在用户经过身份验证后,成员资格系统会提供一个包含有关当前用户的信息的对象。例如,您可以获取成员资格用户对象的属性来确定用户名、电子邮件地址、上次登录时间等。

成员资格系统的一个重要方面是无需显式执行任何低级数据库函数就可以获取或设置用户信息。例如,通过调用成员资格 CreateUser 方法就可创建一个新用户。成员资格系统处理创建存储用户信息所需的数据库记录的细节。在调用 ValidateUser 方法检查用户凭据时,成员资格系统会执行所有数据库查询。

成员资格配置和管理

成员资格系统在应用程序的 Web.config 文件中配置。配置和管理成员资格最简单的方法是使用网站管理工具,该工具提供了一个基于向导的界面。在配置成员资格的过程中,指定:

  • 要使用的成员资格提供程序。(这通常还指定存储成员资格信息的数据库。)

  • 密码选项,如加密和是否支持基于用户特定的问题的密码恢复。

  • 用户和密码。如果您使用的是网站管理工具,则可以直接创建和管理用户。否则,必须调用成员资格函数以编程方式创建和管理用户。

请参见

概念

保证成员资格的安全

其他资源

使用成员资格管理用户