1.建立新网站,命名为MemberShip
2. 配置成员资格
在本演练的稍后部分中,将页面放置到受保护的子目录中。现在必须创建子目录,以便在本演练的稍后部分中可以为其配置安全性。
向网站添加新文件夹
-
在“解决方案资源管理器”中,右击网站的名称,再单击“新建文件夹”。
-
将文件夹命名为 MemberPages。
在使用 ASP.NET 成员资格之前,必须配置应用程序以启用成员资格和设置用户。可以使用网站管理工具,该工具提供了一个用于配置设置的类似向导的界面。
在本演练中,定义单个用户。
创建成员资格用户
-
在“网站”菜单上单击“ASP.NET 配置”。
-
选择“安全”选项卡,单击指向“使用安全设置向导按部就班地配置安全性”的链接,再单击“下一步”。
-
继续执行向导的第 2 步并选择“通过 Internet”选项。
该向导显示一页,从该页中您可以选择网站使用的身份验证方法。该选项指定应用程序将使用 Forms 身份验证,意味着用户将使用在本演练稍后部分中创建的登录页登录应用程序。
-
单击“下一步”。
该向导会显示一条消息,表明将使用“高级提供程序设置”存储用户信息。默认情况下,成员资格信息存储在网站上 App_Data 文件夹的 Microsoft SQL Server 速成版数据库文件中。
-
单击“下一步”。
该向导显示创建角色的选项。将在本演练的稍后部分中单独执行此步骤。因此,不要选择“为此网站启用角色”复选框。
-
单击“下一步”。
该向导显示一页,您可以在该页中创建新用户。
-
输入定义应用程序用户的信息。将下面的值用作准则(可以使用任何想要的值,但是请记下使用的项以便在本演练稍后部分中使用)。
-
“用户名” 您的名称(不要有空格),或示例名称。
-
“密码” 密码。需要严格的密码(该密码包括大写和小写字母以及标点,且长度至少为八个字符)。
-
“电子邮件” 您的个人电子邮件地址。在本演练的稍后部分中,将给您自己发送一则电子邮件,因此需要一个合法的电子邮件地址。
-
“安全提示问题”和“安全答案” 键入可在以后需要恢复密码时使用的问题和答案。
-
-
单击“创建用户”。
该向导显示确认页。
说明: 使网站管理工具保持打开状态。
在本演练前面创建了一个名为“MemberPages”的文件夹。在演练的此部分中,将创建一条规则,确保只有登录用户才可以访问该文件夹中的页面。
设置 MemberPages 子目录的访问规则
-
在向导中单击“下一步”。
该向导显示一页,使您可以创建访问规则。
-
在“添加新访问规则”框中,展开网站的节点。
-
选择“MemberPages”,即前面创建的文件夹。
-
在“规则应用于”下选择“匿名用户”。
-
在“权限”之下选择“拒绝”。
正在创建的规则拒绝匿名用户(即未登录的用户)的访问。
-
单击“添加此规则”。
新的规则显示在下面的网格中。当用户请求“MemberPages”子目录中的页面时,即会检查该规则以确定是否允许该用户访问该页面。
-
单击“完成”。
现在已完成该向导。向导关闭并返回到网站管理工具的“安全”选项卡。
在本演练的这部分,应用程序需要能够发送电子邮件。若要发送消息,应用程序必须能够访问简单邮件传输协议 (SMTP) 服务器,该服务器将来自该应用程序的电子邮件转发给电子邮件收件人。
IIS 包括作为可选组件的默认 SMTP 虚拟服务器,该服务器适用于本演练。有关配置该服务器的更多信息,请参见 如何:在 IIS 6.0 中安装和配置 SMTP 虚拟服务器。如果使用的是局域网,请与网络管理员联系,获取有关访问电子邮件服务器的信息。
设置或确定如何访问 SMTP 服务器之后,必须配置应用程序将电子邮件路由到该服务器。可以通过在网站的 Web.config 文件中生成项来完成上述操作,该文件包含一系列确定应用程序运行方式的设置。
配置应用程序以使用特定 SMTP 服务器
-
在网站管理工具中单击“应用程序”选项卡。
-
在 SMTP 设置下单击“配置 SMTP 电子邮件设置”。
该工具显示一页,您可以在该页中配置电子邮件。
-
如果使用的是您计算机上的 SMTP 虚拟服务器,则输入 localhost 作为“服务器名称”;否则,输入适当的服务器名称。
根据 SMTP 服务器的要求,包括端口号和身份验证的信息。有关如何配置这些设置的更多信息,请与管理员联系。
-
在“发件人”框中,键入有效的电子邮件地址。
-
单击“保存”,然后在确认页中单击“确定”。
网站管理工具使用所做的设置创建 Web.config 文件(如果此文件不存在)。
说明: 在刷新该视图之前,Web.config 文件不会显示在解决方案资源管理器中。
-
关闭网站管理工具。
作为应用程序的一部分,需要建立用户标识,以便应用程序可以根据用户类别执行操作(如显示或隐藏信息)。若要获取用户标识,则要让用户登录。
在本演练中,将在主页上添加一个链接以使用户进入登录页,然后创建该登录页。
使用登录按钮创建主页
-
打开或切换到站点的 Default.aspx 页。(如果没有 Default.aspx 页,则可以添加该页或使用其他页。)
-
切换到“设计”视图。
-
键入静态文本(如“欢迎访问我们的站点”),然后在“格式”工具栏中使用“块格式”下拉列表将该文本的格式设置为标题 1。
-
从“工具箱”的“登录”组中,将 LoginStatus 控件拖动到页面上。
默认情况下,LoginStatus 控件呈现为链接。用户单击该控件后,应用程序将显示登录页。现在可以创建登录页。
创建登录页
显示登录错误
Login 控件包括验证以帮助用户输入正确的信息。例如,如果用户跳过密码,则验证程序控件在“密码”框旁边显示星号 (*)。通过向页面添加 ValidationSummary 控件,可以提供有关登录错误的更完整信息。
显示详细的登录错误
-
从“工具箱”的“验证”组中,将 ValidationSummary 控件拖动到页面上。
-
在 ValidationSummary 控件的“属性”窗口中,将 ValidationGroup 属性设置为 Login1(以前添加的 Login 控件的默认 ID)。
显示有关登录用户的信息
现在修改主页以根据用户是否登录来自定义显示。匿名用户将看到一条邀请他们登录的一般消息。登录用户将看到一则包含他们的登录名的欢迎消息。
自定义登录用户的显示
-
切换到或打开 Default.aspx 页。
-
从“工具箱”的“登录”组中,将 LoginView 控件拖动到页面上。
显示 LoginView 控件,并打开其 AnonymousTemplate 模板。该模板使您可以定义用户在登录前将看到的内容。
-
单击 LoginView 控件的编辑区域以激活编辑。
-
在 LoginView 控件的 AnonymousTemplate 模板的编辑区域中,键入“您尚未登录,请单击登录链接以登录。”
-
在“LoginView 任务”面板的“视图”列表中,单击“LoggedInTemplate”。如果没有看到“LoginView 任务”模板,请右击 LoginView 控件的标题并选择“显示智能标记”。
现在定义将向已经登录的用户显示的内容。
-
单击 LoginView 控件的编辑区域以激活编辑,然后键入 You are logged in. Welcome,。
-
从“工具箱”的“登录”组中,将 LoginName 控件拖动到模板中的文本后面。
测试登录
现在可以测试应用程序的登录能力。
测试登录
-
在“解决方案资源管理器”中,右击“Default.aspx”并单击“设为起始页”。
这样将配置网站,以便运行该站点时首先出现 Default.aspx 页。
-
按 Ctrl+F5 以运行网站。
主页 (Default.aspx) 出现在浏览器中,并显示“登录”链接和一般消息。
-
单击“登录”链接。
显示创建的登录页。
-
键入在本演练前面创建的用户登录名,然后单击“登录”。(不要输入密码。)
星号 (*) 显示在“密码”框的旁边,而且一条错误信息显示在 ValidationSummary 控件中。
-
键入用户名和密码,然后单击“登录”。
如果输入正确的凭据,会返回到主页。该页现在显示“注销”链接、您的用户名和为登录用户定义的欢迎消息。
-
关闭浏览器。
许多网站的一个典型任务是配置页面,以便只有登录用户才可以查看这些页面。在本演练前面,创建了“MemberPages”子目录,并创建了限制访问子目录中页面的规则。在演练的此节中,将页添加到受保护的子目录并测试访问规则。
创建成员专用页面
-
在“解决方案资源管理器”中,右击“MemberPages”文件夹,单击“添加新项”,再添加一个名为 Members.aspx 的新“Web 窗体”。
说明: 请确保在“MemberPages”文件夹中创建该页面。
-
在“设计”视图中,向页面添加文本(如“各位会员,欢迎光临!”) 确切的文本无关紧要,只要在浏览器中看到该页时能够识别该页就可以。
现在可以添加从主页指向成员专用页面的链接。在实际的应用程序中,可能要将指向只供成员使用的页面的链接放置到 LoginView 控件的登录模板中。这样,站点的访问者在登录之前看不到这种链接。但是在本演练中,将使该链接对所有的用户可用,以便可以看见不先登录就试图查看成员专用页面的效果。
添加指向成员专用页面的链接
-
切换到或打开 Default.aspx 页。
-
从“工具箱”的“标准”组中,将 HyperLink 控件拖动到页面上。
-
在 HyperLink 控件的“属性”窗口中,将 Text 属性设置为 Members page 和将 NavigateUrl 属性设置为 ~/MemberPages/Members.aspx 以指向以前创建的页面。
测试成员专用页面
可以通过以匿名用户身份和登录用户身份访问成员专用页面,来测试此页面。
测试成员专用页面
-
按 Ctrl+F5 以运行网站。
-
Default.aspx 页出现在浏览器中时,不要登录。相反,单击“Members page”链接。
您将被重定向到 Login.aspx 页,因为拒绝匿名用户访问只供成员使用的页面。
-
在登录页上,键入在本演练前面部分中使用的用户名和密码进行登录。
您将被重定向到 Members.aspx 页,因为登录使用的用户名已被授权访问该页。
-
关闭浏览器窗口。
在演练的第一部分中,已使用网站管理工具创建用户。如果使用的是一个小的已定义的用户列表(例如为较小的团队创建用户时),则该策略非常有用。但是,很多网站允许用户自己注册。ASP.NET 包括 CreateUserWizard 控件,该控件执行的任务与您在前面使用网站管理工具执行的任务相同。
在演练的本部分中,将添加一个允许用户在网站上注册的功能。首先将创建注册页。
创建注册页
-
在“解决方案资源管理器”中,右击网站的名称,单击“添加新项”,再添加一个名为 Register.aspx 的新“Web 窗体”。
说明: 请确保在网站的根目录中创建该页,而不是在“MemberPages”文件夹中。
-
在 Register.aspx 页上,切换到“设计”视图并在页面上键入静态文本(如“注册”)。在“格式”工具栏中,使用“块格式”下拉列表将该文本的格式设置为标题 1。
-
从“工具箱”的“登录”组中,将 CreateUserWizard 控件拖动到页面上。
-
在 CreateUserWizard 控件的“属性”窗口中,将 ContinueDestinationPageUrl 属性设置为 ~/Default.aspx。
这将配置该控件,以便创建用户之后用户单击“继续”时,控件可以返回到主页。
-
从“工具箱”的“标准”组中,将 HyperLink 控件拖动到页面上。在 HyperLink 控件的“属性”窗口中,将 Text 属性设置为 Home,并将 NavigateUrl 属性设置为 ~/Default.aspx。
现在可以添加一个指向主页的链接,该主页显示注册页。在本演练中,假定只向未登录的用户显示注册链接。
在主页上创建注册链接
-
切换到或打开 Default.aspx 页。
-
右击以前添加的 LoginView 控件,然后选择“显示智能标记”。在“LoginView 任务”面板中选择“视图”列表框中的“AnonymousTemplate”,以激活匿名模板中的编辑。
-
从“工具箱”的“标准”组中,将 HyperLink 控件拖动到匿名模板上。在 HyperLink 控件的“属性”窗口中,将 Text 属性设置为 Register,并将 NavigateUrl 属性设置为 Register.aspx。“注册”链接只向未登录用户显示。
现在可以测试注册过程。
测试注册
-
按 Ctrl+F5 以运行网站和显示 Default.aspx 页。
因为尚未登录,所以显示包含“注册”链接的页面。
-
单击“注册”链接。
显示注册页。
-
在文本框中,输入新的用户名、严格的密码、电子邮件地址和安全提示问题和答案。(这五项信息均为必选。)
-
单击“创建用户”。
显示确认消息。
-
单击“继续”按钮。
以登录用户的身份返回到主页。请注意,“登录”链接已更改为“注销”,而且在 Login 控件中显示的信息来自 LoggedInTemplate 属性,而不是来自 AnonymousTemplate 属性。
-
单击“注销”链接。
页面更改为显示适用于匿名用户的信息。
-
单击“登录”链接。
-
输入刚才创建的用户的凭据。
以新用户的身份登录。
-
关闭浏览器窗口。
有时候用户可能想要更改密码,但是手动执行该任务通常不太实际。因此,可以使用另一个 ASP.NET 控件使用户可以自己更改密码。若要更改密码,则用户必须知道现有密码。
在本演练中,将添加一个页面,登录用户可以在此页面更改其密码。
创建密码更改页
-
在“解决方案资源管理器”中,右击“MemberPages”文件夹,单击“添加新项”,再添加一个名为 ChangePassword.aspx 的新“Web 窗体”。
说明: 请确保在“MemberPages”文件夹中创建该页面。
将该页放置到成员专用文件夹,因为只有登录用户才可以更改其密码。
-
在 ChangePassword.aspx 页上,切换到“设计”视图并键入静态文本(如“更改密码”)。在“格式”工具栏中,使用“块格式”下拉列表将该文本的格式设置为标题 1。
-
从“工具箱”的“登录”组中,将 ChangePassword 控件拖动到页面上。
-
在 ChangePassword 控件的“属性”窗口中,将 ContinueDestinationPageUrl 属性设置为 ~/Default.aspx
-
这将配置该控件,以便用户更改密码之后单击“继续”时控件可以返回到主页。
现在可以添加一个指向主页的链接,该主页显示密码更改页。将使该链接只对登录用户可用。
在主页上创建密码更改链接
-
切换到或打开 Default.aspx 页。
-
右击 LoginView 控件,然后单击“显示智能标记”。在“LoginView 任务”菜单的“视图”列表中,单击“LoggedInTemplate”。
这将把 LoginView 控件切换到向登录用户显示的内容的编辑模式。
-
从“工具箱”的“标准”组中,将 HyperLink 控件拖动到编辑区域。在 HyperLink 控件的“属性”窗口中,将 Text 属性设置为 Change password,将 NavigateUrl 属性设置为 ~/MemberPages/ChangePassword.aspx。
“更改密码”链接将只对登录用户显示,这与以前创建的“注册”链接相反。
现在可以测试密码更改过程。
测试密码更改
-
按 Ctrl+F5 以运行网站。
-
在 Default.aspx 页上单击“登录”链接,并以已创建的用户的身份登录。
完成之后,以登录用户的身份返回到主页。
-
单击“更改密码”链接。
-
在密码更改页,输入旧密码和新密码,然后单击“更改密码”。
-
单击“继续”。
-
在主页上单击“注销”。
-
单击“登录”链接。
-
输入新密码。
这样就使用新密码登录。
-
关闭浏览器窗口。
有时用户会忘记密码。可以向网站添加密码恢复页,以便用户可以再次登录网站。可以使用两种形式恢复密码:
-
可以向用户发送他们选定的密码(或设置网站时为用户创建的密码)。该选项要求站点使用可还原的加密来存储密码。
-
可以向用户发送一个新密码,用户可以使用以前创建的密码更改页更改该密码。如果网站使用不可还原的加密方案(如哈希)存储密码,则该选项非常有用。
说明: |
---|
对于需要高级别的安全性的站点,建议不使用电子邮件返回明文形式的密码。对于高安全性站点,建议使用加密的方式(如安全套接字层 (SSL))返回密码。 |
默认情况下,ASP.NET 成员资格系统通过使用哈希算法生成密码以确保其安全,这样做意味着密码不可以恢复。因此,在演练的本部分中,网站将向用户发送新密码。
说明: |
---|
要恢复密码,网站必须可以发送电子邮件。如果不能够配置网站以发送电子邮件(如此演练前面的“配置应用程序的电子邮件设置”中所解释),则不能够向网站添加密码恢复功能。 |
添加密码恢复
-
在“解决方案资源管理器”中,右击网站的名称,单击“添加新项”,再添加一个名为 RecoverPassword.aspx 的新“Web 窗体”。
说明: 请确保在网站的根目录中创建该页,而不是在“MemberPages”文件夹中。
-
在 RecoverPassword.aspx 页上,切换到“设计”视图并键入静态文本(如“将密码重置为新值”)。在“格式”工具栏中,使用“块格式”下拉列表将该文本的格式设置为标题 1。
-
从“工具箱”的“登录”组中,将 PasswordRecovery 控件拖动到页面上。
-
从“工具箱”的“标准”组中,将 HyperLink 控件拖动到页面上。在 HyperLink 控件的“属性”窗口中,将 Text 属性设置为 Home,并将 NavigateUrl 属性设置为 ~/Default.aspx。
-
切换到 Default.aspx 页。
-
右击 LoginView 控件,然后单击“显示智能标记”。在“LoginView 任务”菜单的“视图”列表中,单击“AnonymousTemplate”。
这将把 LoginView 控件切换到向未登录用户显示的内容的编辑模式。
-
从“工具箱”的“标准”组中,将 HyperLink 控件拖动到模板上。在 HyperLink 控件的“属性”窗口中,将 Text 属性设置为 Forgot your password?,将 NavigateUrl 属性设置为 ~/RecoverPassword.aspx。
现在可以测试密码恢复。
测试密码恢复
-
按 Ctrl+F5 以运行网站。
-
默认情况下为未登录用户,因此看见 LoginView 控件的匿名模板。
-
单击“是否忘记了您的密码?”链接。
出现 RecoverPassword.aspx 页。
-
键入用户名并单击“提交”。
显示安全提示问题并提示您键入安全答案。
-
键入安全答案并单击“提交”。
如果输入正确的答案,则网站将重置密码并给您发送附有新密码的电子邮件。