成员资格介绍

     MSDN:http://msdn.microsoft.com/zh-cn/library/6e9y4s5t.aspx

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 数据库中。 但您也可以使用其他提供程序,如针对 Windows Live ID 的提供程序。 还可以选择使用 Active Directory 存储成员资格信息,或者可以指定自定义提供程序。 有关可以在 ASP.NET 应用程序的 Web.config 文件中指定的成员资格配置选项的信息,请参见配置 ASP.NET 应用程序以使用成员资格

  2. 将您的应用程序配置为使用 Forms 身份验证(与 Windows 或 Windows Live ID 身份验证不同)。

    还可指定应用程序中的某些页或文件夹受到保护,并只能由经过身份验证的用户访问。 有关更多信息,请参见演练:通过角色管理网站用户

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

然后,您可以使用成员资格对应用程序中的用户进行身份验证。 通常,您将提供一个用户可登录的页、一个新用户可注册的注册页和一个用户可更改其密码的密码更改页。 ASP.NET 登录控件(LoginLoginViewLoginStatusLoginName 和 PasswordRecovery)实际上封装了提示用户输入凭据及验证成员资格系统中的凭据所需的所有逻辑。

Visual Studio 中用于创建 ASP.NET 项目的默认模板包括多个页,这些页包含许多基本登录功能。 有关如何使用项目模板的信息,请参见演练:使用基本用户登录功能创建 ASP.NET 网站 或者,您可以使用该模板中的相同 ASP.NET 控件来创建自定义登录页和成员资格页。 有关如何手动将这些 ASP.NET 控件放在一起来创建验证用户身份的应用程序的信息,请参见演练:创建具有成员资格和用户登录功能的网站

如果您已将应用程序配置为使用 Forms 身份验证,则在未经验证的用户请求一个受保护的页面时,ASP.NET 将自动显示登录页。

如果您使用 ASP.NET 中提供的项目模板或使用登录控件,它们都将自动使用成员资格系统来验证用户。 如果创建自定义登录控件,则必须调用 ValidateUser 方法来验证用户的用户名和密码。 在验证用户后,可保留有关用户的信息(例如,如果用户的浏览器接受 Cookie,则使用加密 Cookie)。 登录控件将自动执行此任务,但如果您创建自定义登录控件,则可调用 FormsAuthentication 类的方法来创建 Cookie 并将其写入用户的计算机中。 如果用户忘记了他或她的密码,则登录页可以调用成员资格函数,帮助用户恢复密码或重置密码。

每当用户请求页时,ASP.NET Forms 身份验证都会检查是否对用户进行了身份验证。 当某个页受到限制时,作为已批准角色的成员的已验证用户可查看该页。 匿名用户(未登录的用户)将定向到登录页。 默认情况下,身份验证 Cookie 在用户会话期间一直有效。

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

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

下表列出了 ASP.NET 成员资格所使用的类以及这些类的功能。

类/接口

函数

Membership

提供常规成员资格功能。

创建一个新用户。

删除一个用户。

用新信息来更新用户。

返回用户列表。

通过名称或电子邮件来查找用户。

验证(身份验证)用户。

获取联机用户的人数。

通过用户名或电子邮件地址来搜索用户。

MembershipUser

提供有关特定用户的信息。

获取密码和密码问题。

更改密码。

确定用户是否联机。

确定用户是否已经过验证。

返回最后一次活动、登录和密码更改的日期。

取消对用户的锁定。

MembershipProvider

为可供成员资格系统使用的数据提供程序定义功能。

定义要求成员资格所使用的提供程序实现的方法和属性。

MembershipProviderCollection

返回所有可用提供程序的集合。

MembershipUserCollection

存储对 MembershipUser 对象的引用。

MembershipCreateStatus

提供描述性值,用于描述创建一个新成员资格用户时是成功还是失败。

MembershipCreateUserException

定义无法创建用户时引发的异常。 描述异常原因的 MembershipCreateStatus 枚举值可通过 StatusCode 属性获取。

MembershipPasswordFormat

指定 ASP.NET 包含的成员资格提供程序可以使用的密码存储格式(ClearHashedEncrypted)。

使用应用程序的 Web.config 文件中的 membership 元素配置 ASP.NET 成员资格。 membership 元素是 system.web 节的一个子元素。 可通过直接编辑应用程序的 Web.config 文件为该应用程序启用 ASP.NET 成员资格,也可以使用网站管理工具,该工具提供基于向导的界面。 在配置成员资格的过程中,指定:

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

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

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

有关使用网站管理工具配置 ASP.NET 成员资格的示例,请参见演练:创建具有成员资格和用户登录功能的网站

使用 membership 元素的 defaultProvider 特性来指定默认的成员资格提供程序。 如果没有显式指定默认的提供程序,计算机配置将指定一个名为“AspNetSqlMembershipProvider”的 SqlMembershipProvider 实例(它被标识为默认的提供程序)。 “AspNetSqlMembershipProvider”连接到本地 SQL Server 中的 aspnetdb 数据库。

注意 注意

您需要首先设置 SqlMembershipProvider 使用的数据库,然后才能在应用程序中使用它。 有关详细信息,请参见为 SQL Server 创建和配置应用程序服务数据库

您还可以通过配置 membership 节中的提供程序来为此提供程序指定默认的提供程序实例和选项。 使用 providers 元素来标识要添加到可供应用程序使用的提供程序集合的提供程序。 将 name 特性的值用作 defaultProvider 值可将您的提供程序实例标识为默认的提供程序。 当指定某个提供程序实例时,还必须通过使用配置的connectionStrings 节为该实例指定有效的连接字符串。 例如,下面的 Web.config 文件标识一个 SqlMembershipProvider 实例,此实例连接到本地服务器以外的 SQL Server。

<configuration>
  <connectionStrings>
    <add name="MySqlConnection" connectionString="Data 
      Source=MySqlServer;Initial Catalog=aspnetdb;Integrated
      Security=SSPI;" />
  </connectionStrings>
  <system.web>
    <authentication mode="Forms" >
      <forms loginUrl="login.aspx"
        name=".ASPXFORMSAUTH" />
    </authentication>
    <authorization>
      <deny users="?" />
    </authorization>
    <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
      <providers>
        <clear />
        <add 
          name="SqlProvider" 
          type="System.Web.Security.SqlMembershipProvider" 
          connectionStringName="MySqlConnection"
          applicationName="MyApplication"
          enablePasswordRetrieval="false"
          enablePasswordReset="true"
          requiresQuestionAndAnswer="true"
          requiresUniqueEmail="true"
          passwordFormat="Hashed" />
      </providers>
    </membership>
  </system.web>
</configuration>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值