MemberShip 示例

1.建立新网站,命名为MemberShip

2. 配置成员资格

在本演练的稍后部分中,将页面放置到受保护的子目录中。现在必须创建子目录,以便在本演练的稍后部分中可以为其配置安全性。

向网站添加新文件夹

  1. “解决方案资源管理器”中,右击网站的名称,再单击“新建文件夹”

  2. 将文件夹命名为 MemberPages

在使用 ASP.NET 成员资格之前,必须配置应用程序以启用成员资格和设置用户。可以使用网站管理工具,该工具提供了一个用于配置设置的类似向导的界面。

在本演练中,定义单个用户。

创建成员资格用户

  1. “网站”菜单上单击“ASP.NET 配置”

  2. 选择“安全”选项卡,单击指向“使用安全设置向导按部就班地配置安全性”的链接,再单击“下一步”

  3. 继续执行向导的第 2 步并选择“通过 Internet”选项。

    该向导显示一页,从该页中您可以选择网站使用的身份验证方法。该选项指定应用程序将使用 Forms 身份验证,意味着用户将使用在本演练稍后部分中创建的登录页登录应用程序。

  4. 单击“下一步”

    该向导会显示一条消息,表明将使用“高级提供程序设置”存储用户信息。默认情况下,成员资格信息存储在网站上 App_Data 文件夹的 Microsoft SQL Server 速成版数据库文件中。

  5. 单击“下一步”

    该向导显示创建角色的选项。将在本演练的稍后部分中单独执行此步骤。因此,不要选择“为此网站启用角色”复选框。

  6. 单击“下一步”

    该向导显示一页,您可以在该页中创建新用户。

  7. 输入定义应用程序用户的信息。将下面的值用作准则(可以使用任何想要的值,但是请记下使用的项以便在本演练稍后部分中使用)。

    • “用户名”   您的名称(不要有空格),或示例名称。

    • “密码”   密码。需要严格的密码(该密码包括大写和小写字母以及标点,且长度至少为八个字符)。

    • “电子邮件”   您的个人电子邮件地址。在本演练的稍后部分中,将给您自己发送一则电子邮件,因此需要一个合法的电子邮件地址。

    • “安全提示问题”“安全答案”   键入可在以后需要恢复密码时使用的问题和答案。

  8. 单击“创建用户”

    该向导显示确认页。

    说明:

    使网站管理工具保持打开状态。

在本演练前面创建了一个名为“MemberPages”的文件夹。在演练的此部分中,将创建一条规则,确保只有登录用户才可以访问该文件夹中的页面。

设置 MemberPages 子目录的访问规则

  1. 在向导中单击“下一步”

    该向导显示一页,使您可以创建访问规则。

  2. “添加新访问规则”框中,展开网站的节点。

  3. 选择“MemberPages”,即前面创建的文件夹。

  4. “规则应用于”下选择“匿名用户”

  5. “权限”之下选择“拒绝”

    正在创建的规则拒绝匿名用户(即未登录的用户)的访问。

  6. 单击“添加此规则”

    新的规则显示在下面的网格中。当用户请求“MemberPages”子目录中的页面时,即会检查该规则以确定是否允许该用户访问该页面。

  7. 单击“完成”

    现在已完成该向导。向导关闭并返回到网站管理工具的“安全”选项卡。

在本演练的这部分,应用程序需要能够发送电子邮件。若要发送消息,应用程序必须能够访问简单邮件传输协议 (SMTP) 服务器,该服务器将来自该应用程序的电子邮件转发给电子邮件收件人。

IIS 包括作为可选组件的默认 SMTP 虚拟服务器,该服务器适用于本演练。有关配置该服务器的更多信息,请参见 如何:在 IIS 6.0 中安装和配置 SMTP 虚拟服务器。如果使用的是局域网,请与网络管理员联系,获取有关访问电子邮件服务器的信息。

设置或确定如何访问 SMTP 服务器之后,必须配置应用程序将电子邮件路由到该服务器。可以通过在网站的 Web.config 文件中生成项来完成上述操作,该文件包含一系列确定应用程序运行方式的设置。

配置应用程序以使用特定 SMTP 服务器

  1. 在网站管理工具中单击“应用程序”选项卡。

  2. 在 SMTP 设置下单击“配置 SMTP 电子邮件设置”

    该工具显示一页,您可以在该页中配置电子邮件。

  3. 如果使用的是您计算机上的 SMTP 虚拟服务器,则输入 localhost 作为“服务器名称”;否则,输入适当的服务器名称。

    根据 SMTP 服务器的要求,包括端口号和身份验证的信息。有关如何配置这些设置的更多信息,请与管理员联系。

  4. “发件人”框中,键入有效的电子邮件地址。

  5. 单击“保存”,然后在确认页中单击“确定”

    网站管理工具使用所做的设置创建 Web.config 文件(如果此文件不存在)。

    说明:

    在刷新该视图之前,Web.config 文件不会显示在解决方案资源管理器中。

  6. 关闭网站管理工具。

作为应用程序的一部分,需要建立用户标识,以便应用程序可以根据用户类别执行操作(如显示或隐藏信息)。若要获取用户标识,则要让用户登录。

在本演练中,将在主页上添加一个链接以使用户进入登录页,然后创建该登录页。

使用登录按钮创建主页

  1. 打开或切换到站点的 Default.aspx 页。(如果没有 Default.aspx 页,则可以添加该页或使用其他页。)

  2. 切换到“设计”视图。

  3. 键入静态文本(如“欢迎访问我们的站点”),然后在“格式”工具栏中使用“块格式”下拉列表将该文本的格式设置为标题 1。

  4. “工具箱”“登录”组中,将 LoginStatus 控件拖动到页面上。

默认情况下,LoginStatus 控件呈现为链接。用户单击该控件后,应用程序将显示登录页。现在可以创建登录页。

创建登录页

  1. “解决方案资源管理器”中,右击 Web 应用程序并选择“添加新项”。将名为 Login.aspx“Web 窗体”添加到站点。

    说明:

    在本演练中,该页名称必须为 Login.aspx。默认情况下,将 Forms 身份验证配置为使用具有该名称的页面。虽然在本演练中不会这样做,但是可以更改 Web.config 文件中的默认登录页(将用户重定向到的页面)。

  2. 在 Login.aspx 页上切换到“设计”视图。

  3. “工具箱”“登录”组中,将 Login 控件拖动到页面上。

    Login 控件是一个提示用户输入凭据并进行验证的单个控件。

显示登录错误

Login 控件包括验证以帮助用户输入正确的信息。例如,如果用户跳过密码,则验证程序控件在“密码”框旁边显示星号 (*)。通过向页面添加 ValidationSummary 控件,可以提供有关登录错误的更完整信息。

显示详细的登录错误

  1. “工具箱”“验证”组中,将 ValidationSummary 控件拖动到页面上。

  2. ValidationSummary 控件的“属性”窗口中,将 ValidationGroup 属性设置为 Login1(以前添加的 Login 控件的默认 ID)。

显示有关登录用户的信息

现在修改主页以根据用户是否登录来自定义显示。匿名用户将看到一条邀请他们登录的一般消息。登录用户将看到一则包含他们的登录名的欢迎消息。

自定义登录用户的显示

  1. 切换到或打开 Default.aspx 页。

  2. “工具箱”“登录”组中,将 LoginView 控件拖动到页面上。

    显示 LoginView 控件,并打开其 AnonymousTemplate 模板。该模板使您可以定义用户在登录前将看到的内容。

  3. 单击 LoginView 控件的编辑区域以激活编辑。

  4. LoginView 控件的 AnonymousTemplate 模板的编辑区域中,键入“您尚未登录,请单击登录链接以登录。”

  5. “LoginView 任务”面板的“视图”列表中,单击“LoggedInTemplate”。如果没有看到“LoginView 任务”模板,请右击 LoginView 控件的标题并选择“显示智能标记”

    现在定义将向已经登录的用户显示的内容。

  6. 单击 LoginView 控件的编辑区域以激活编辑,然后键入 You are logged in. Welcome,

  7. “工具箱”“登录”组中,将 LoginName 控件拖动到模板中的文本后面。

测试登录

现在可以测试应用程序的登录能力。

测试登录

  1. “解决方案资源管理器”中,右击“Default.aspx”并单击“设为起始页”

    这样将配置网站,以便运行该站点时首先出现 Default.aspx 页。

  2. 按 Ctrl+F5 以运行网站。

    主页 (Default.aspx) 出现在浏览器中,并显示“登录”链接和一般消息。

  3. 单击“登录”链接。

    显示创建的登录页。

  4. 键入在本演练前面创建的用户登录名,然后单击“登录”。(不要输入密码。)

    星号 (*) 显示在“密码”框的旁边,而且一条错误信息显示在 ValidationSummary 控件中。

  5. 键入用户名和密码,然后单击“登录”

    如果输入正确的凭据,会返回到主页。该页现在显示“注销”链接、您的用户名和为登录用户定义的欢迎消息。

  6. 关闭浏览器。

许多网站的一个典型任务是配置页面,以便只有登录用户才可以查看这些页面。在本演练前面,创建了“MemberPages”子目录,并创建了限制访问子目录中页面的规则。在演练的此节中,将页添加到受保护的子目录并测试访问规则。

创建成员专用页面

  1. “解决方案资源管理器”中,右击“MemberPages”文件夹,单击“添加新项”,再添加一个名为 Members.aspx 的新“Web 窗体”

    说明:

    请确保在“MemberPages”文件夹中创建该页面。

  2. “设计”视图中,向页面添加文本(如“各位会员,欢迎光临!”) 确切的文本无关紧要,只要在浏览器中看到该页时能够识别该页就可以。

现在可以添加从主页指向成员专用页面的链接。在实际的应用程序中,可能要将指向只供成员使用的页面的链接放置到 LoginView 控件的登录模板中。这样,站点的访问者在登录之前看不到这种链接。但是在本演练中,将使该链接对所有的用户可用,以便可以看见不先登录就试图查看成员专用页面的效果。

添加指向成员专用页面的链接

  1. 切换到或打开 Default.aspx 页。

  2. “工具箱”“标准”组中,将 HyperLink 控件拖动到页面上。

  3. HyperLink 控件的“属性”窗口中,将 Text 属性设置为 Members page 和将 NavigateUrl 属性设置为 ~/MemberPages/Members.aspx 以指向以前创建的页面。

测试成员专用页面

可以通过以匿名用户身份和登录用户身份访问成员专用页面,来测试此页面。

测试成员专用页面

  1. 按 Ctrl+F5 以运行网站。

  2. Default.aspx 页出现在浏览器中时,不要登录。相反,单击“Members page”链接。

    您将被重定向到 Login.aspx 页,因为拒绝匿名用户访问只供成员使用的页面。

  3. 在登录页上,键入在本演练前面部分中使用的用户名和密码进行登录。

    您将被重定向到 Members.aspx 页,因为登录使用的用户名已被授权访问该页。

  4. 关闭浏览器窗口。

在演练的第一部分中,已使用网站管理工具创建用户。如果使用的是一个小的已定义的用户列表(例如为较小的团队创建用户时),则该策略非常有用。但是,很多网站允许用户自己注册。ASP.NET 包括 CreateUserWizard 控件,该控件执行的任务与您在前面使用网站管理工具执行的任务相同。

在演练的本部分中,将添加一个允许用户在网站上注册的功能。首先将创建注册页。

创建注册页

  1. “解决方案资源管理器”中,右击网站的名称,单击“添加新项”,再添加一个名为 Register.aspx 的新“Web 窗体”

    说明:

    请确保在网站的根目录中创建该页,而不是在“MemberPages”文件夹中。

  2. 在 Register.aspx 页上,切换到“设计”视图并在页面上键入静态文本(如“注册”)。在“格式”工具栏中,使用“块格式”下拉列表将该文本的格式设置为标题 1。

  3. “工具箱”“登录”组中,将 CreateUserWizard 控件拖动到页面上。

  4. CreateUserWizard 控件的“属性”窗口中,将 ContinueDestinationPageUrl 属性设置为 ~/Default.aspx

    这将配置该控件,以便创建用户之后用户单击“继续”时,控件可以返回到主页。

  5. “工具箱”“标准”组中,将 HyperLink 控件拖动到页面上。在 HyperLink 控件的“属性”窗口中,将 Text 属性设置为 Home,并将 NavigateUrl 属性设置为 ~/Default.aspx

现在可以添加一个指向主页的链接,该主页显示注册页。在本演练中,假定只向未登录的用户显示注册链接。

在主页上创建注册链接

  1. 切换到或打开 Default.aspx 页。

  2. 右击以前添加的 LoginView 控件,然后选择“显示智能标记”。在“LoginView 任务”面板中选择“视图”列表框中的“AnonymousTemplate”,以激活匿名模板中的编辑。

  3. “工具箱”“标准”组中,将 HyperLink 控件拖动到匿名模板上。在 HyperLink 控件的“属性”窗口中,将 Text 属性设置为 Register,并将 NavigateUrl 属性设置为 Register.aspx“注册”链接只向未登录用户显示。

现在可以测试注册过程。

测试注册

  1. 按 Ctrl+F5 以运行网站和显示 Default.aspx 页。

    因为尚未登录,所以显示包含“注册”链接的页面。

  2. 单击“注册”链接。

    显示注册页。

  3. 在文本框中,输入新的用户名、严格的密码、电子邮件地址和安全提示问题和答案。(这五项信息均为必选。)

  4. 单击“创建用户”

    显示确认消息。

  5. 单击“继续”按钮。

    以登录用户的身份返回到主页。请注意,“登录”链接已更改为“注销”,而且在 Login 控件中显示的信息来自 LoggedInTemplate 属性,而不是来自 AnonymousTemplate 属性。

  6. 单击“注销”链接。

    页面更改为显示适用于匿名用户的信息。

  7. 单击“登录”链接。

  8. 输入刚才创建的用户的凭据。

    以新用户的身份登录。

  9. 关闭浏览器窗口。

有时候用户可能想要更改密码,但是手动执行该任务通常不太实际。因此,可以使用另一个 ASP.NET 控件使用户可以自己更改密码。若要更改密码,则用户必须知道现有密码。

在本演练中,将添加一个页面,登录用户可以在此页面更改其密码。

创建密码更改页

  1. “解决方案资源管理器”中,右击“MemberPages”文件夹,单击“添加新项”,再添加一个名为 ChangePassword.aspx 的新“Web 窗体”

    说明:

    请确保在“MemberPages”文件夹中创建该页面。

    将该页放置到成员专用文件夹,因为只有登录用户才可以更改其密码。

  2. 在 ChangePassword.aspx 页上,切换到“设计”视图并键入静态文本(如“更改密码”)。在“格式”工具栏中,使用“块格式”下拉列表将该文本的格式设置为标题 1。

  3. “工具箱”“登录”组中,将 ChangePassword 控件拖动到页面上。

  4. ChangePassword 控件的“属性”窗口中,将 ContinueDestinationPageUrl 属性设置为 ~/Default.aspx

  5. 这将配置该控件,以便用户更改密码之后单击“继续”时控件可以返回到主页。

现在可以添加一个指向主页的链接,该主页显示密码更改页。将使该链接只对登录用户可用。

在主页上创建密码更改链接

  1. 切换到或打开 Default.aspx 页。

  2. 右击 LoginView 控件,然后单击“显示智能标记”。在“LoginView 任务”菜单的“视图”列表中,单击“LoggedInTemplate”

    这将把 LoginView 控件切换到向登录用户显示的内容的编辑模式。

  3. “工具箱”“标准”组中,将 HyperLink 控件拖动到编辑区域。在 HyperLink 控件的“属性”窗口中,将 Text 属性设置为 Change password,将 NavigateUrl 属性设置为 ~/MemberPages/ChangePassword.aspx

    “更改密码”链接将只对登录用户显示,这与以前创建的“注册”链接相反。

现在可以测试密码更改过程。

测试密码更改

  1. 按 Ctrl+F5 以运行网站。

  2. 在 Default.aspx 页上单击“登录”链接,并以已创建的用户的身份登录。

    完成之后,以登录用户的身份返回到主页。

  3. 单击“更改密码”链接。

  4. 在密码更改页,输入旧密码和新密码,然后单击“更改密码”

  5. 单击“继续”

  6. 在主页上单击“注销”

  7. 单击“登录”链接。

  8. 输入新密码。

    这样就使用新密码登录。

  9. 关闭浏览器窗口。

有时用户会忘记密码。可以向网站添加密码恢复页,以便用户可以再次登录网站。可以使用两种形式恢复密码:

  • 可以向用户发送他们选定的密码(或设置网站时为用户创建的密码)。该选项要求站点使用可还原的加密来存储密码。

  • 可以向用户发送一个新密码,用户可以使用以前创建的密码更改页更改该密码。如果网站使用不可还原的加密方案(如哈希)存储密码,则该选项非常有用。

说明:

对于需要高级别的安全性的站点,建议不使用电子邮件返回明文形式的密码。对于高安全性站点,建议使用加密的方式(如安全套接字层 (SSL))返回密码。

默认情况下,ASP.NET 成员资格系统通过使用哈希算法生成密码以确保其安全,这样做意味着密码不可以恢复。因此,在演练的本部分中,网站将向用户发送新密码。

说明:

要恢复密码,网站必须可以发送电子邮件。如果不能够配置网站以发送电子邮件(如此演练前面的“配置应用程序的电子邮件设置”中所解释),则不能够向网站添加密码恢复功能。

添加密码恢复

  1. “解决方案资源管理器”中,右击网站的名称,单击“添加新项”,再添加一个名为 RecoverPassword.aspx 的新“Web 窗体”

    说明:

    请确保在网站的根目录中创建该页,而不是在“MemberPages”文件夹中。

  2. 在 RecoverPassword.aspx 页上,切换到“设计”视图并键入静态文本(如“将密码重置为新值”)。在“格式”工具栏中,使用“块格式”下拉列表将该文本的格式设置为标题 1。

  3. “工具箱”“登录”组中,将 PasswordRecovery 控件拖动到页面上。

  4. “工具箱”“标准”组中,将 HyperLink 控件拖动到页面上。在 HyperLink 控件的“属性”窗口中,将 Text 属性设置为 Home,并将 NavigateUrl 属性设置为 ~/Default.aspx

  5. 切换到 Default.aspx 页。

  6. 右击 LoginView 控件,然后单击“显示智能标记”。在“LoginView 任务”菜单的“视图”列表中,单击“AnonymousTemplate”

    这将把 LoginView 控件切换到向未登录用户显示的内容的编辑模式。

  7. “工具箱”“标准”组中,将 HyperLink 控件拖动到模板上。在 HyperLink 控件的“属性”窗口中,将 Text 属性设置为 Forgot your password?,将 NavigateUrl 属性设置为 ~/RecoverPassword.aspx

现在可以测试密码恢复。

测试密码恢复

  1. 按 Ctrl+F5 以运行网站。

  2. 默认情况下为未登录用户,因此看见 LoginView 控件的匿名模板。

  3. 单击“是否忘记了您的密码?”链接。

    出现 RecoverPassword.aspx 页。

  4. 键入用户名并单击“提交”

    显示安全提示问题并提示您键入安全答案。

  5. 键入安全答案并单击“提交”

    如果输入正确的答案,则网站将重置密码并给您发送附有新密码的电子邮件。

你可能感兴趣的:(IP)