网站的一个典型要求是,只允许某些用户(经过身份验证的用户)查看特定的页面。 在此情况下,网站通常会为用户提供用来登录和进行身份验证的方法以及对匿名用户(未登录用户)隐藏信息的方法。
本演练将对我们这一章所学的内容进行总结,演示如何手动将这些 ASP.NET 控件和 ASP.NET 成员资格服务放在一起,来创建验证用户身份并对匿名用户隐藏信息的应用程序。
本次试验将需要完成以下任务:
创建网站。
创建对所有用户可访问的主页。
创建登录页。
创建成员专用页面。
配置成员资格。
添加新用户(成员)。
允许用户更改其密码。
允许用户重置忘记的密码。
(未加入Membership)
系统必备
为了完成本演练,您需要:
在计算机上安装 Visual Studio 2010 或 Visual Web Developer 2010 学习版以及以上版本。
计算机上安装的 SQL Server 。
对可转发电子邮件的电子邮件服务器的访问权。 (服务器不需要能够接收消息)。如果您无权访问电子邮件服务器,则可运行本演练中的过程,但您将无法使用密码恢复功能。
PS:安装IIS
创建网站
若要创建自定义用户登录页,您首先需要创建一个空白网站项目。
创建主页
您首先需要创建网站的主页,网站的所有用户都将从这里开始。
1. 在 “ 解决方案资源管理器 ” 中右击网站项目的名称,然后单击 “ 添加新项 ” 。显示 “ 添加新项 ” 对话框。
2. 如果未显示 “ 解决方案资源管理器 ” 窗口,请选择 “ 视图 ” 菜单,然后单击 “ 解决方案资源管理器 ” 。
3. 选择 “Web 窗体 ” ,接受默认名称 (Default.aspx) ,然后单击 “ 添加 ” 。
4. 切换到 “ 设计 ” 视图并添加文本(如 “ 我的主页 ” )。
5. 在 “ 格式 ” 工具栏中,将该文本的格式设置为 “ 标题 1” 。
2. 如果未显示 “ 解决方案资源管理器 ” 窗口,请选择 “ 视图 ” 菜单,然后单击 “ 解决方案资源管理器 ” 。
3. 选择 “Web 窗体 ” ,接受默认名称 (Default.aspx) ,然后单击 “ 添加 ” 。
4. 切换到 “ 设计 ” 视图并添加文本(如 “ 我的主页 ” )。
5. 在 “ 格式 ” 工具栏中,将该文本的格式设置为 “ 标题 1” 。
创建登录页
作为网站的一部分,您必须建立用户标识(验证用户身份),以便网站可以根据用户身份执行操作(如显示或隐藏信息)。 若要获取用户标识,则必须让用户登录。 因此,您的网站必须包含登录页。
1. 在 “ 解决方案资源管理器 ” 中右击网站项目的名称,然后单击 “ 添加新项 ” 。
2. 选择 “Web 窗体 ” ,将默认名称更改为 Login.aspx ,然后单击 “ 添加 ” 。
1. 在 “ 解决方案资源管理器 ” 中右击网站项目的名称,然后单击 “ 添加新项 ” 。
2. 选择 “Web 窗体 ” ,将默认名称更改为 Login.aspx ,然后单击 “ 添加 ” 。
3. 在 Login.aspx 页中,切换到 “ 设计 ” 视图。
4. 向页面中添加文本(如 “ 登录页 ” ),并再次将标题的格式设置为 “ 标题 1” 。
5. 按 Enter 创建新段落。
6. 从 “ 工具箱 ” 的 “ 登录 ” 组中,将 Login 控件拖动到新段落。Login 控件是一个提示用户输入凭据并进行验证的单个控件。 如果需要,您可以使用智能标记面板上的 “ 自动套用格式 ” 链接将格式应用于 Login 控件。
1. 从 “ 工具箱 ” 的 “ 验证 ” 组中,将 ValidationSummary 控件拖动到 Login.aspx 页面上。 将ValidationSummary 放在 Login 控件下。
2. 在 ValidationSummary 控件的 “ 属性 ” 窗口中,将 ValidationGroup 属性设置为 Login1 (以前添加的 Login 控件的 ID )。(如果未显示 “ 属性 ” 窗口,请单击 “ 视图 ” 菜单上的 “ 属性窗口 ” 。)
3. 保存和关闭该页。
现在可以测试登录页。
4. 向页面中添加文本(如 “ 登录页 ” ),并再次将标题的格式设置为 “ 标题 1” 。
5. 按 Enter 创建新段落。
6. 从 “ 工具箱 ” 的 “ 登录 ” 组中,将 Login 控件拖动到新段落。Login 控件是一个提示用户输入凭据并进行验证的单个控件。 如果需要,您可以使用智能标记面板上的 “ 自动套用格式 ” 链接将格式应用于 Login 控件。
显示详细的登录错误
Login 控件包括验证以帮助用户输入正确的信息。 例如,如果用户跳过密码,则验证程序控件在 “ 密码 ”文本框旁边显示星号 (*) 。 若要提供有关页面中错误的更多详细信息,您需要添加 ValidationSummary控件。1. 从 “ 工具箱 ” 的 “ 验证 ” 组中,将 ValidationSummary 控件拖动到 Login.aspx 页面上。 将ValidationSummary 放在 Login 控件下。
2. 在 ValidationSummary 控件的 “ 属性 ” 窗口中,将 ValidationGroup 属性设置为 Login1 (以前添加的 Login 控件的 ID )。(如果未显示 “ 属性 ” 窗口,请单击 “ 视图 ” 菜单上的 “ 属性窗口 ” 。)
3. 保存和关闭该页。
现在可以测试登录页。
显示有关登录用户的信息
下一步是修改主页以根据用户是否登录来自定义显示内容。 匿名用户将看到一条邀请他们登录的一般消息。 登录用户将看到一条包含他们的用户名的欢迎消息。自定义登录用户的显示
1. 切换到或打开 Default.aspx 页,然后切换到 “ 设计 ” 视图。
2. 从 “ 工具箱 ” 的 “ 登录 ” 组中,将 LoginView 控件拖动到页面上。显示 LoginView 控件,并打开其 “AnonymousTemplate” 模板。 该模板使您可以定义用户在登录前将看到的内容。
3. 单击 LoginView 控件的编辑区域以激活编辑。
4. 在 LoginView 控件的 “AnonymousTemplate” 模板的编辑区域中,输入 “ 您尚未登录,请单击登录链接以登录。 ” 。与将文本直接输入编辑区域中相比,复制文本并将其粘贴到编辑区域中或在 “ 源 ” 视图中将文本添加为标记可能更容易一些。 下面的示例演示文本在标记中的显示方式。
<asp:LoginView ID="LoginView1" runat="server" >
<AnonymousTemplate>
You are not logged in. Click the Login link to sign in.
</AnonymousTemplate>
</asp:LoginView>
5. 在 “ 设计 ” 视图中,选择 LoginView 控件,然后在 “LoginView 任务 ” 面板上的 “ 视图 ” 列表中,单击 “LoggedInTemplate” 。 如果未显示 “LoginView 任务 ” 面板,请右击 LoginView 控件的标题,然后单击 “ 显示智能标记 ” 。“LoggedInTemplate” 定义将为已登录的用户显示的内容。
6. 单击 LoginView 控件的编辑区域以激活编辑,然后输入以下文本 “ 您已登录,欢迎您 ” 。
7. 将光标放在 “LoggedInTemplate” 的编辑区域中您刚添加的文本后面。 从 “ 工具箱 ” 的 “ 登录 ” 组中,双击 LoginName 控件。 LoginName 控件将显示已登录用户的名称。
8. 从 “ 工具箱 ” 的 “ 登录 ” 组中,将 LoginStatus 控件拖入页面中。 当用户未登录时, LoginStatus 控件将显示 “ 登录 ” 链接。 当用户登录时,该控件将显示 “ 注销 ” 超链接。
9. 保存页。
添加新用户
在很多网站中,用户可自己注册。 为了支持此功能, ASP.NET 包括 CreateUserWizard 控件,该控件执行的任务与您在前面使用网站管理工具执行的任务相同。
1. 在 “ 解决方案资源管理器 ” 中右击网站项目的名称,然后单击 “ 添加新项 ” 。
2. 添加一个名为 Register.aspx 的新 “Web 窗体 ” ,然后单击 “ 添加 ” 。
创建注册页
在演练的本部分中,将添加一个允许用户在网站上注册的功能。 首先将创建一个注册页。1. 在 “ 解决方案资源管理器 ” 中右击网站项目的名称,然后单击 “ 添加新项 ” 。
2. 添加一个名为 Register.aspx 的新 “Web 窗体 ” ,然后单击 “ 添加 ” 。
3. 在 Register.aspx 页上,切换到 “ 设计 ” 视图并在页面上输入文本(如 “ 注册 ” )。 利用 “ 格式 ” 工具栏,将该文本的格式设置为 “ 标题 1” 。
4. 从 “ 工具箱 ” 的 “ 登录 ” 组中,将 CreateUserWizard 控件拖动到页面上。
5. 在 CreateUserWizard 控件的 “ 属性 ” 窗口中,将 ContinueDestinationPageUrl 属性设置为~/Default.aspx 。这将配置该控件,以便创建用户之后用户单击 “ 继续 ” 时可以返回到主页。
6. 从 “ 工具箱 ” 的 “ 标准 ” 组中,将 HyperLink 控件拖动到页面上。
7. 在 HyperLink 控件的 “ 属性 ” 窗口中,执行以下操作:
o 将 Text 属性设置为 “ 主页 ” 。
o 将 NavigateUrl 属性设置为 ~/Default.aspx 。
8. 保存和关闭该页。
4. 从 “ 工具箱 ” 的 “ 登录 ” 组中,将 CreateUserWizard 控件拖动到页面上。
5. 在 CreateUserWizard 控件的 “ 属性 ” 窗口中,将 ContinueDestinationPageUrl 属性设置为~/Default.aspx 。这将配置该控件,以便创建用户之后用户单击 “ 继续 ” 时可以返回到主页。
6. 从 “ 工具箱 ” 的 “ 标准 ” 组中,将 HyperLink 控件拖动到页面上。
7. 在 HyperLink 控件的 “ 属性 ” 窗口中,执行以下操作:
o 将 Text 属性设置为 “ 主页 ” 。
o 将 NavigateUrl 属性设置为 ~/Default.aspx 。
8. 保存和关闭该页。
现在,您将添加一个链接,该链接会将注册页同时显示给主页和登录页。 在本演练中,假定只向未登录的用户显示注册链接。
2. 右击以前添加的 LoginView 控件,然后单击 “ 显示智能标记 ” 。
3. 在 “LoginView 任务 ” 面板中选择 “ 视图 ” 列表中的 “AnonymousTemplate” ,以激活匿名模板中的编辑。
4. 从 “ 工具箱 ” 的 “ 标准 ” 组中,将 HyperLink 控件拖动到匿名模板上。 将光标放在编辑区域中,然后双击 “ 工具箱 ” 中的 HyperLink 控件可能更容易一些。
5. 在 HyperLink 控件的 “ 属性 ” 窗口中,执行以下操作:
a. 将 Text 属性设置为 “ 注册 ” 。
b. 将 NavigateUrl 属性设置为 Register.aspx 。
6. 切换到或打开 Login.aspx 页。
7. 从 “ 工具箱 ” 的 “ 标准 ” 组中,将 HyperLink 控件拖入页面中。
8. 在 HyperLink 控件的 “ 属性 ” 窗口中,执行以下操作:
a. 将 Text 属性设置为 “ 注册 ” 。
b. 将 NavigateUrl 属性设置为 Register.aspx 。
现在可以测试注册过程。
在主页上创建注册链接
1. 切换到或打开 Default.aspx 页。2. 右击以前添加的 LoginView 控件,然后单击 “ 显示智能标记 ” 。
3. 在 “LoginView 任务 ” 面板中选择 “ 视图 ” 列表中的 “AnonymousTemplate” ,以激活匿名模板中的编辑。
4. 从 “ 工具箱 ” 的 “ 标准 ” 组中,将 HyperLink 控件拖动到匿名模板上。 将光标放在编辑区域中,然后双击 “ 工具箱 ” 中的 HyperLink 控件可能更容易一些。
5. 在 HyperLink 控件的 “ 属性 ” 窗口中,执行以下操作:
a. 将 Text 属性设置为 “ 注册 ” 。
b. 将 NavigateUrl 属性设置为 Register.aspx 。
6. 切换到或打开 Login.aspx 页。
7. 从 “ 工具箱 ” 的 “ 标准 ” 组中,将 HyperLink 控件拖入页面中。
8. 在 HyperLink 控件的 “ 属性 ” 窗口中,执行以下操作:
a. 将 Text 属性设置为 “ 注册 ” 。
b. 将 NavigateUrl 属性设置为 Register.aspx 。
现在可以测试注册过程。
允许用户更改其密码
有时候用户想要更改密码,但是手动执行该任务通常不太实际。 可以使用另一个 ASP.NET 控件使用户可以自己更改密码。 若要更改密码,则用户必须知道现有密码。您将添加一个页面,登录用户可以在此页面更改其密码。创建密码更改页
1. 在 “ 解决方案资源管理器 ” 中,右击 MemberPages 文件夹,单击 “ 添加新项 ” ,再添加一个新的“Web 窗体 ” ,将其命名为 ChangePassword.aspx ,然后单击 “ 添加 ” 。确保在 MemberPages 文件夹中创建页。 将该页放置到 MemberPages 文件夹,因为只有登录用户才可以更改其密码。
2. 在 ChangePassword.aspx 页上,切换到 “ 设计 ” 视图并输入文本(如 “ 更改密码 ” ),然后将其格式设置为 “ 标题 1” 。
3. 从 “ 工具箱 ” 的 “ 登录 ” 组中,将 ChangePassword 控件拖动到页面上。
4. 在 ChangePassword 控件的 “ 属性 ” 窗口中,将 ContinueDestinationPageUrl 属性设置为~/Default.aspx 。这将配置该控件,以便用户在更改密码后单击 “ 继续 ” 时可以重定向到主页。
5. 保存和关闭该页。
在主页上创建密码更改链接
现在可以添加一个指向主页的链接,该主页显示 ChangePassword.aspx 页。 将使该链接只对登录用户可用。1. 切换到或打开 Default.aspx 页。
2. 右击 LoginView 控件,然后单击 “ 显示智能标记 ” 。
3. 在 “LoginView 任务 ” 窗格中的 “ 视图 ” 列表中,单击 “LoggedInTemplate” 。这将把 LoginView 控件切换到向已登录用户显示的内容的编辑模式。
4. 从 “ 工具箱 ” 的 “ 标准 ” 组中,将 HyperLink 控件拖动到编辑区域。
5. 在 HyperLink 控件的 “ 属性 ” 窗口中,执行以下操作:
a. 将 Text 属性设置为 “ 更改密码 ” 。
b. 将 NavigateUrl 属性设置为 ~/MemberPages/ChangePassword.aspx 。
允许用户重置其密码
当用户忘记其密码时,网站可允许他们恢复或重置其密码。 如果未对密码进行哈希处理,则可以恢复密码(即发送给用户)。若已对密码进行哈希处理,则成员资格系统将不存储实际密码。 相反,该系统将使用为密码生成唯一值的单向算法(哈希算法)来处理密码,然后再存储此哈希值。 可重复使用此算法以在登录时测试用户密码,但无法反过来生成实际密码。 这将提高成员资格数据库的安全性,因为获取对数据库的访问权并不意味着公开密码。默认情况下,成员资格提供程序会将密码存储为哈希值。 因此,无法恢复密码。 相反,如果用户忘记了密码,则网站必须生成一个新的密码,并通过电子邮件将该密码发送给用户。 为了方便网站发送电子邮件,您的计算机必须具有对简单邮件传输协议 (SMTP) 服务器的访问权限。在此过程中,您将向您的网站中添加一个密码重置页,并会将网站配置为通过电子邮件向用户发送新密码。 若要重置密码,用户必须提供用户名,并且必须回答其在注册时所提供的安全问题。 系统会将新密码发送到用户在注册时提供的电子邮件地址。创建密码重置页
1. 在 “ 解决方案资源管理器 ” 中右击网站项目的名称,然后单击 “ 添加新项 ” 。2. 添加一个新的 “Web 窗体 ” 页,将其命名为 PasswordRecovery.aspx ,然后单击 “ 添加 ” 。
3. 在 PasswordRecovery.aspx 页中,切换到 “ 设计 ” 视图,并在页面中输入文本(如 “ 忘记密码 ” ),然后将其格式设置为 “ 标题 1” 。
4. 从 “ 工具箱 ” 的 “ 登录 ” 组中,将 PasswordRecovery 控件拖动到页面上。
5. 打开或切换到 Login.aspx 页,然后切换到 “ 设计 ” 视图。
6. 从 “ 工具箱 ” 的 “ 标准 ” 组中,将 HyperLink 控件拖动到页面上。
7. 将 Text 属性设置为 “ 忘记密码 ” ,并将 NavigateUrl 属性设置为~/PasswordRecovery.aspx 。
4. 从 “ 工具箱 ” 的 “ 登录 ” 组中,将 PasswordRecovery 控件拖动到页面上。
5. 打开或切换到 Login.aspx 页,然后切换到 “ 设计 ” 视图。
6. 从 “ 工具箱 ” 的 “ 标准 ” 组中,将 HyperLink 控件拖动到页面上。
7. 将 Text 属性设置为 “ 忘记密码 ” ,并将 NavigateUrl 属性设置为~/PasswordRecovery.aspx 。
将网站配置为使用 SMTP 服务器
下一步,您将网站配置为使用 SMTP 服务器。 若要正确配置服务器,您必须掌握安装信息。 如果服务器需要身份验证,则您需要用户名和密码。 有关如何获取此安装信息的信息,请与系统管理员联系。 在确定如何访问 SMTP 服务器之后,必须配置网站将电子邮件路由到该服务器。 可在网站管理工具中或通过在网站的 Web.config 文件中生成项来完成上述操作,该文件包含一系列确定应用程序运行方式的设置。 下面的过程演示如何使用 ASP.NET 网站管理工具来执行此任务。将网站配置为使用 SMTP 服务器1. 在 “ 网站 ” 菜单上单击 “ASP.NET 配置 ” 。
2. 在网站管理工具中,单击 “ 应用程序 ” 选项卡。
3. 在 “SMTP 设置 ” 下单击 “ 配置 SMTP 电子邮件设置 ” 。 该工具显示一页,您可以在该页中配置电子邮件。
4. 输入页面提示您输入的信息。
5. 单击 “ 保存 ” ,然后在确认页中单击 “ 确定 ” 。网站管理工具将创建一个 Web.config 文件,其中包含您在 mailSettings 部分中进行的设置。
6. 关闭显示网站管理工具的浏览器窗口。
7. 打开 Web.config 文件。
8. 在 system.net 元素和 mailSettings 元素下,验证 smtp 和 host 设置。
如果您的 SMTP 服务器需要一个安全连接,则您必须将 enableSsl 特性设置为 true 。 在Web.config 文件中的 smtp 元素的 network 部分中执行此操作。
9. Web.config 文件中的 SMTP 设置类似于下面的示例。
9. Web.config 文件中的 SMTP 设置类似于下面的示例。
<system.net>
<mailSettings>
<smtp from="管理员">
<network host="smtp.163.com" password="1111111111" userName="aaaa111111"/>
</smtp>
</mailSettings>
</system.net>