ASP.NET 2.0入门经典4

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

成员关系的概念在人类社会中是一个层次比较低的概念,源于希望属于某个群组的意识。我们希望能觉得自己是某个团队的一部分,让别人知道我们是谁,因此Web搭上这个流行趋势,采用这个概念只是时间早晚的问题。如果坐下来想一想曾经登录过多少个站点并在这些站点上保存了简单的用户信息,可能会发现自己所属的群组比一开始想象的要多得多。从出售书籍和小器具的站点到讨论拥有一辆FordPuma的好处的社区,或者宣传一个名为LookAroundYou的BBCTV喜剧节目的站点,作者发现自己是会员的站点多得无法一一列举。接下来就会碰到一个熟悉的困难“登录这个站点要使用哪个用户名和口令?”Web上最成功的站点之一,Amazon.com,一开始只是一个书店,但后面经营的范围越来越大。现在当用户登录Amazon时,将发现整个页面上全是与该用户的消费习惯有关的商品。在本章中,您将学习怎样使用ASP.NET2.0提供的成员关系功能实现站点的个性化。本章讨论如下内容:●身份、验证和授权的概念●成员关系服务器变量,包括Login控件●保存成员配置文件以便取回●在站点的特定部分实施访问限制,只运行特定的成员访问●根据当前用户配置文件个性化站点还将扩展WroxUnited示例站点,以便能够登录该站点并根据一组保存起来的个人偏好个性化站点,这些信息是基于成员配置文件的。4.1安全基础知识在开始开发涉及到成员关系的应用程序时,必须首先理解几个关键的概念,这些概念是身份、验证和授权。4.1.1身份——我是谁在考虑身份时,我们可以用几种独一的特性来描述自己。例如,我是一个头发金黄的女人,喜欢看科幻电影和组装PC机,但这些信息对于对我的羽毛球技术感兴趣的人来说并不是必需的。保存在站点中的身份信息很可能只与一个人的某些方面相关。例如,一个购物站点会保存用户的姓名、电话号码、电子邮件地址和家庭地址,这些信息都与商品的销售有关。它们可能不会关心您的个人兴趣(除非它们和Amazon的规模一样大),所以它们并不需要保存关于用户的这类信息,但是这并不妨碍它们拥有这些方面的身份信息。因此身份,也就是我是谁的概念,是一组范围很广的实际情况的集合。您可能曾经在简历里写下了很多实际情况,但这些情况同样只与潜在的雇主相关。在简历中保存和删除哪些情况由自己决定。在保存一个站点的成员的信息时,情况也是一样的,必须在开发阶段就确定要保存成员的哪些实际情况。4.1.2身份验证——这就是我在试图登录一个网站的时候,用户要输入某些证书;例如,邮件地址及其口令的组合。网站接下来必须判断用户是否就是自己声明的那个人,因此用户输入的邮件地址和口令的组合必须与保存在服务器文件中特定的邮件地址和口令组合相匹配。身份验证的过程就是证明自己是自己所声明的那个人的过程。很多站点,不论它们是零售商品还是提供社区服务,都使用邮件地址和口令的组合作为身份验证方法,这是一种经过反复考验的方法。虽然这种方法不是绝对安全,但是只要选择一个足够可靠的口令并严格保密,同时站点的代码经过严格的测试,那么用户的配置文件将只能由用户本人使用。4.1.3授权——这是我能做的在向网站输入用户名和口令之后,Web服务器将不仅会验证口令和用户名是否匹配,还将查看站点管理员给用户授予了什么权限。身份验证之后的下一个步骤是授权,这个步骤将检索您所拥有的用户账户类型的更多信息。例如,以一个银行网站为例。在用户的登录信息通过验证之后,服务器将查看用户在该站点上的权限。与大多数用户一样,您可以查询账户、在账户之间转账或者支付账单。然而,如果银行受到某个安全方面的恐吓(类似于Internet上到处流传的网络钓鱼(phishing)电子邮件),您可能会发现自己突然无法通过这个在线应用程序添加任何第三方代理订单,直到安全危机解除为止。功能的关闭很可能是由管理员为一些或所有用户设置一个特殊的标记而进行控制的,在页面上告诉用户他们不再有权限修改他们账户的详细信息。4.1.4登录站点登录站点的过程,从用户的角度看,就是输入一组证书,然后根据自己的配置文件看到不同用户界面的过程。通常,用户所使用的证书是用户名加口令的组合;然而,对于安全性更高的站点,例如银行站点,可以使用其他的方式登录,包括PIN和安全认证。如果不考虑向服务器传送身份验证证书的方法,那么身份验证的基本原则是一样的。一旦验证完成之后,通过身份验证机制查询用户具有什么样的权限就比较简单了。撇开理论,ASP.NET2.0提供了一些非常强大的工具,可以帮助开发人员以最小的代价实现登录-身份验证-授权架构。在旧版的ASP.NET中,开发人员必须编写代码实现登录、根据数据库进行验证并根据当前登录的用户做出响应。虽然开发人员最终仍要编写代码对用户进行处理(如本章后面的内容所示),但是一些强大的控件和向导已经把这个过程起始阶段的各种困难都解决了。在这一节中,将进一步学习用于处理登录的服务器控件和ASP.NETWebApplicationConfiguration实用工具。4.2.1Login控件在本小节中,首先将创建一个只有两个页面的简单模拟站点;Default.aspx是前台页面,login.aspx是登录页面。您将进行一系列的练习,然后暂停下来查看幕后发生的是什么。在本章的后面,将把其中一些规则应用到WroxUnited站点以便把登录架构整合到这个应用程序中。这一节介绍以下几个控件:●Login控件,该控件提供文本框、按钮和内建的身份验证功能,使开发人员通过简单的拖放操作就可以向页面添加登录功能。●LoginView控件,该控件根据用户是否登录可以改变页面的外观,或者向不同群组的用户显示不同的页面。●LoginStatus控件,该控件向用户显示反馈信息,提醒用户他们是否已经登录站点。在下面的“试一试”练习中,将使用以上的一些控件。这个示例通过创建页面并添加控件来搭建站点的骨架。(1)打开VWD并在C:\BegASPNET2\Chapters\Begin目录中创建一个空白的站点,将其命名为Chapter04。默认情况下,站点中应该已经包含了一个名为Default.aspx的页面,如图4-1所示。图4-1(2)再添加控件。切换到DesignView,从工具箱的Login面板中将LoginView控件拖放到页面上(如图4-2所示)。在弹出的CommonTasks菜单中,确保选择AnonymousTemplate并在主文本框中输入Youarenotloggedin。图4-2(3)通过单击该控件右上方的小箭头再次打开CommonTasks菜单并选择LoggedInTemplate,然后在文本框中输入Youareloggedin。这将确保页面提醒用户是否已经登录。(4)将一个LoginStatus控件拖放到页面上并放置在LoginView控件的下面,如图4-3所示。这个控件将根据用户当前是否已经登录向用户显示一个登录或登出链接。图4-3(5)下一步要创建一个登录页面,因此在SolutionExplorer中单击站点的根目录并选择AddNewItem。在弹出的对话框中,选择WebForm并命名为Login.aspx,如图4-4所示。图4-4(6)在这个新创建的页面中,从工具箱的Login面板上拖放一个Login控件到该页面上,如图4-5所示。(7)在弹出的CommonTasks菜单中,可以管理站点。到现在为止,整个架构已经搭建完毕,但在站点能够运行之前需要添加一些用户账户,因此请单击CommonTasks菜单中的AdministerWebsite链接启动ASP.NETWebApplicationConfiguration工具,该工具将在下一个练习中介绍。图4-5操作回顾这些控件确实非常强大,虽然现在还不能运行这个示例,但是完全可以相信,只需再进行少量的处理,就可以获得一个能够试验登录功能的完整的(目的非常单纯的)站点。这些控件是在ASP.NET2.0中新增加的;在以前,开发人员必须手动添加文本框、按钮并编写VB.NET或者C#代码来处理这个过程、显示用户是否登录的消息、以及根据当前的用户改变页面。到目前为止,您所需做的就是向页面中拖放一些控件,这就是搭建一个应用程序的架构必须完成的所有工作。现在,让我们来看看添加到页面中的控件,从Default.aspx页面开始。在SourceView中查看Default.aspx页面将看到如下代码:asp:LoginViewID=LoginView1Runat=serverLoggedInTemplateYouareloggedin/LoggedInTemplateAnonymousTemplateYouarenotloggedin./AnonymousTemplate/asp:LoginViewasp:LoginStatusID=LoginStatus1Runat=server/在代码中可以看到两个已定义的控件:用于显示登录信息的LoginView控件和用于控制登录与登出过程的LoginStatus控件。注意如果按照本例进行配置,将无法看到匿名模板消息,因为匿名用户没有访问站点的权限(而是被直接导航到登录页面)。在Login.aspx页面中,将看到如下已添加的代码:asp:LoginID=Login1Runat=server/asp:Login几乎不用编写任何代码!所有的功能都已事先编写好,所以不会看到任何文本框,也不会看到任何身份验证代码——而只是看到一行代码。ASP.NET2.0中提供工具让开发人员自己创建类似这种复杂的控件,但这个内容超出了本章的讨论范围。在前一个练习的第7步中单击管理链接之后,VWD中将显示如图4-6所示的页面(注意每回第一次启动这个站点的时候端口号都将不同)。图4-6(1)单击Security链接显示Security设置管理选项卡,如图4-7所示。图4-7(2)该页面上有一个超链接,单击该链接可以启动SecuritySetupWizard。单击该链接进入向导的第一步,如图4-8所示。图4-8(3)单击Next跳过这个页面,并进入如图4-9所示的界面。选择FromtheInternet单选按钮允许匿名用户和已登录的用户访问这个站点。图4-9单击Next进入下一步,如图4-10所示。图4-10可以直接跳过该页面并单击Next继续——默认的提供商将提供所有的功能。在下一个界面中,向导会询问是否希望为站点定义角色。在这个示例中,可以跳过这一步——本章的后面将定义角色。不要选中复选框并单击Next。(4)在到达下一个界面之后,该向导将提示输入用户的一些详细信息,如图4-11所示。图4-11(5)如图4-12所示,输入站点的某个用户的详细信息——这可能是您的姓名、我的姓名或者是其他任何人的姓名!只要别忘记所输入的口令就行——后面要用到这个口令。单击CreateUser按钮将显示一个确认提示,此时可以单击Continue创建另一个用户。到现在为止,已创建了两个用户——一个标准用户和一个后面将用作站点管理员的用户。图4-12在后面的练习中,将为这些用户指定恰当的站点访问权限。注意现在还不能为用户指定任何角色——这将在后面的安装过程中完成。单击Next继续。(6)下一步是为站点定义权限级别,定义谁能看到站点的内容,谁不能访问站点。在这个步骤中,可以直接为用户添加权限。在后面,将把这些用户添加到不同的群组并为整个群组的用户赋予权限。如图4-13所示,需要为每个用户单独赋予Allow权限,并拒绝所有的匿名用户。为了设置某个用户的权限,首先选中User单选按钮,在该按钮后面的文本框中输入用户名,选择Allow,并单击AddThisRule。要拒绝匿名用户访问,选中AnonymousUsers单选按钮,在Permission区单击Deny,并单击AddThisRule。在单击Next之后,向导也将完成,这意味着现在有了一个拥有一些用户配置文件和访问权限级别的站点。现在就只剩下运行页面了!(7)返回VWD,按下Ctrl+F5运行Default.aspx页面

1 / 27
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功