Membership 介绍
ASP.NET成员资格为您提供了验证和存储用户凭据的内置方式。因此,ASP.NET成员可以帮助您管理网站中的用户身份验证。您可以使用ASP.NET表单身份验证使用ASP.NET成员身份,方法是使用ASP.NET登录控件创建一个用于验证用户的完整系统。
ASP.NET会员资格支持以下设施:
-
创建新用户和密码。
-
在Microsoft SQL Server,Active Directory或备用数据存储中存储成员身份信息(用户名,密码和支持数据)。
-
验证访问您的网站的用户。您可以以编程方式对用户进行身份验证,也可以使用ASP.NET登录控件来创建一个完整的身份验证系统,需要很少或没有代码。
-
管理密码,包括创建,更改和重置密码。根据您选择的会员资格选项,会员制还可以提供一个自动的密码重置系统,该系统提供用户提供的问题和响应。
-
为您可以在自己的应用程序中使用的经过身份验证的用户公开一个唯一的标识,并且还与ASP.NET个性化和角色管理(授权)系统集成。
-
指定自定义成员资格提供程序,允许您替换自己的代码来管理成员资格并维护自定义数据存储中的成员资格数据
会员资格,角色和用户配置文件属性
虽然成员身份是ASP.NET中用于身份验证的独立功能,但它可以与ASP.NET角色管理集成,为您的网站提供授权服务。会员资格还可以与用户配置文件属性集成,以提供针对个人用户定制的特定于应用程序的定制。有关详细信息,请参阅使用角色和ASP.NET配置文件属性概述管理授权。有关如何使用角色成员身份的信息,请参阅演练:使用角色管理网站用户。
会员资格如何运作
要使用会员资格,您必须先为您的网站进行配置。以下是为了配置成员资格而遵循的基本步骤:
-
指定成员资格选项作为网站配置的一部分。默认情况下,启用成员资格。您还可以指定要使用的会员提供商。默认提供程序将成员资格信息存储在Microsoft SQL Server数据库中。但是,您也可以使用其他提供程序,例如Windows Live ID的提供程序。您还可以选择使用Active Directory来存储成员信息,也可以指定自定义提供程序。有关可以在ASP.NET应用程序的Web.config文件中指定的成员资格配置选项的信息,请参阅配置ASP.NET应用程序以使用成员资格。
-
配置您的应用程序以使用表单身份验证(与Windows或Windows Live ID身份验证不同)。
您还可以指定应用程序中的某些页面或文件夹是受保护的,只能由经过身份验证的用户访问。有关详细信息,请参阅演练:使用角色管理网站用户。
-
定义用户帐户的会员资格。你可以通过各种方式来做到这一点。您可以使用网站管理工具,该工具提供了类似向导的界面来创建新用户。或者,您可以使用收集用户名和密码(和可选的电子邮件地址)的ASP.NET网页,然后使用CreateUser成员资格方法在成员资格系统中创建新用户。
然后,您可以使用成员身份来验证应用程序中的用户。通常,您将提供用户可以登录的页面,新用户可以注册的注册页面以及用户可以更改密码的更改密码页面。ASP.NET登录控件(Login,LoginView,LoginStatus,LoginName和PasswordRecovery)几乎封装了提示用户提供凭据所需的所有逻辑,并验证了会员系统中的凭据。
Visual Studio中用于创建ASP.NET项目的默认模板包括大部分基本登录功能。有关如何使用项目模板的信息,请参阅演练:使用基本用户登录创建ASP.NET网站。或者,您可以使用模板中相同的ASP.NET控件来创建自定义登录和成员资格页面。有关如何手动放置这些ASP.NET控件以创建用于验证用户的应用程序的信息,请参阅演练:使用成员资格和用户登录创建网站。
如果您已将应用程序配置为使用表单身份验证,则如果未经身份验证的用户请求受保护的页面,ASP.NET将自动显示登录页面。
如果您使用ASP.NET中提供的项目模板或使用登录控件,他们将自动使用成员资格系统验证用户。如果创建自定义登录控件,则必须调用ValidateUser方法来验证用户的用户名和密码。用户验证后,可以持续关于用户的信息(例如,如果用户的浏览器接受Cookie,则使用加密的cookie)。登录控件自动执行此任务,但如果创建自定义登录控件,则可以调用FormsAuthentication类的方法来创建cookie并将其写入用户的计算机。如果用户忘记了自己的密码,登录页面可以呼叫用户帮助用户恢复密码或重置密码的会员功能。
每次用户请求一个页面时,ASP.NET都会对用户是否进行身份验证进行身份验证。如果页面受到限制,则可以通过身份验证并且是已批准角色的成员的用户查看该页面。匿名用户(未登录的用户)被定向到登录页面。默认情况下,身份验证cookie对用户的会话保持有效。
用户通过身份验证后,会员系统将提供一个包含当前用户信息的对象。例如,您可以获取成员资格用户对象的属性,以确定用户的名称和电子邮件地址,用户上次登录到您的网站时,等等。
会员系统的一个重要方面是,您不需要显式执行任何低级数据库功能来获取或设置用户信息。例如,通过调用成员CreateUser方法创建新用户。会员系统处理创建必要的数据库记录以存储用户信息的细节。当您调用ValidateUser方法来检查用户凭据时,会员系统将为您执行所有数据库查找。