《ASP NET程序设计》-项目七状态管理与安全管理_第1页
《ASP NET程序设计》-项目七状态管理与安全管理_第2页
《ASP NET程序设计》-项目七状态管理与安全管理_第3页
《ASP NET程序设计》-项目七状态管理与安全管理_第4页
《ASP NET程序设计》-项目七状态管理与安全管理_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务一使用多种方式进行状态管理【任务要点】1.学会使用基于客户端的状态管理2.学会使用基于服务器的状态管理【案例1】

使用Application统计网站的访问情况:①页面单击数,页面被单击一次访问量加1,不管是否是同一个用户多次单击页面;②用户访问数,来一个用户访问量就加1,一个用户打开多个页面不会影响这个数字。下一页返回任务一使用多种方式进行状态管理【具体步骤】(1)右击网站,在弹出的快捷菜单中选择【添加新项】命令,如图7-1所示,在弹出的对话框中选择【全局应用程序类】选项。(2)Global.asax是一个用来处理应用程序全局的事件。打开文件,系统已经定义了一些事件的处理方法。详见课本。(3)需要在Application_Start中去初始化两个变量。voidApplication_Start(objectsender,EventArgse){//在应用程序启动时运行的代码Application["PageClick"]=0;Application["UserVisit"]=0;}下一页返回上一页任务一使用多种方式进行状态管理(4)用户访问数根据Session来判断,因此可以在Session_Start的时候去增加这个变量。voidSession_Start(objectsender,EventArgse){Application.Lock();Application["UserVisit"]=(int)Application["UserVisit"]+1;Application.UnLock();}(5)页面单击数则在页面Page_Load的时候去修改。下一页返回上一页任务一使用多种方式进行状态管理【案例2】

在用户登录时,将用户名等登录信息存储在Session变量中,应用程序的其他页面可以访问该变量。如图7-7和图7-8所示。【具体步骤】(1)创建页面SessionVariableNew.aspx,添加控件,见表7-1。(2)在SessionVariableNew.aspx.CS文件的btnLogin_Click中填写代码。(3)创建SessionVariableWelcome.aspx,并在后置代码的Page_Load事件处理程序中添加代码。下一页返回上一页任务一使用多种方式进行状态管理【案例3】

记录某台机器访问页面的次数,访问的次数存入客户端的Cookie中,如图7-9所示。【具体步骤】(1)创建页面cookie.aspx。(2)设计cookie.aspx的界面。①在“属性”窗口里,把Document的Title属性改为“访问计数器”。②添加一个Label控件,拖动到页面中的适当位置,并把Label控件的ID属性设置为message,Text属性设置为空。③打开cookie.aspx.cs的代码编辑窗口,为Page_Load()添加代码。④按F5键,可看到程序的执行结果。下一页返回上一页任务一使用多种方式进行状态管理【案例4】使用ViewState保存用户单击按钮的次数,执行结果如图7-10所示。【具体步骤】(1)设计Web页面。新建一个ASP.NET网站,向页面中添加必要的控件说明文字:添加1个按钮控件Button1;1个标签控件Label1,如图7-11所示。(2)编写事件代码。下一页返回上一页任务一使用多种方式进行状态管理【背景知识】一、状态管理概述状态管理是对同一页或不同页的多个请求维护状态和页信息的过程。与所有基于HTTP的技术一样,Web窗体页是无状态的,这些窗体不自动指示序列中的请求是否全部来自相同的客户端,或者单个浏览器实例是否一直在查看页或站点。此外,到服务器的每一往返过程都将销毁并重新创建页,因此,如果超出了单个页的生命周期,页信息将不存在。比如,在代码中声明一个DataSet从数据库获取记录,页面回发(也就是重新请求)后这个DataSet是空的,这就是为什么在ASP.NET应用程序中,甚至在一个页面中需要多次连接数据库获取记录。由于以上原因,状态管理对于Web编程来说非常重要,从第一代动态Web编程语言开始就支持多种状态管理以弥补HTTP无状态的不足。下一页返回上一页任务一使用多种方式进行状态管理

现在的Web应用程序,通常都是数据驱动的,但是在状态处理中,应该尽量减少对数据库的依赖,原因有以下几点。(1)数据库是存放在磁盘上的,如果把数据都存放在数据库中的话,存取速度和性能会比较差;(2)很多数据是和用户相关的,但是没有一个唯一的标志来区分哪条记录对应哪个客户端(浏览器);(3)很多数据是临时的,用户关闭了浏览器这些数据就不再需要了,如果把数据存放在数据库中的话,会不知道是哪个用户关闭了浏览器,也就不能及时把数据删除。下一页返回上一页任务一使用多种方式进行状态管理通常来讲,状态管理的作用主要概括为以下几点。(1)指示用户信息,关联浏览器实例;(2)使得页与页之间,请求与请求之间能够共享信息;(3)更为快速的数据存储与读取。二、基于服务器的状态管理

ASP.NET提供了多种方法用于维护服务器上的状态信息,而不是保持客户端上的信息。通过基于服务器的状态管理,为了保留状态,可以减少发送给客户端的信息量。主要包括两种方式:应用程序状态和会话状态。下一页返回上一页任务一使用多种方式进行状态管理1.应用程序状态应用程序状态(Application)是应用于整个应用程序的,由于它的访问速度非常快而且只要应用程序不停止,数据就一直存在,所以通常在Application_Start的时候去初始化一些数据,在以后的访问中可以迅速地访问和检索。2.会话状态会话状态(Session)用于保存每个用户的专用信息。Session中的信息保存在Web服务器内容中,保存的数据量可大可小。当Session超时或被关闭时将自动释放保存的数据信息。下一页返回上一页任务一使用多种方式进行状态管理三、基于客户端的状态管理基于客户端的状态管理是将数据存储在客户端上以保持状态信息从而进行状态管理,它常见的实现方式包括:Cookie、视图状态、控件状态、隐藏域、查询字符串、Cache几种方式。1.CookieCookie是一小段文本信息,提供了一种存储用户特定信息的方法,伴随着用户请求和页面在Web服务器和浏览器之间传递。当访问某站点时,浏览器在获得页面的同时也获得了Cookie,并将它存储在用户硬盘上的某个文件夹中,Cookie能够帮助网站存储有关访问者的信息。Cookie可以是临时的(具有特定的过期时间和日期),也可以是永久的。下一页返回上一页任务一使用多种方式进行状态管理2.隐藏域

ASP.NET允许将信息存储在HiddenField控件中,此控件呈现为一个标准的HTML隐藏域。隐藏域(HiddenField)在浏览器中不以可见的形式呈现,但可以像标准控件一样被设置其属性。当向服务器提交页时,隐藏域的内容将在HTTP窗体集合中随同其他控件的值一起发送。3.视图状态视图状态(ViewState)是ASP.NET页框架默认情况下用于保存往返过程之间的页面信息以及控件值的方法。4.控件状态控件状态(ControlState)允许保持特定于某个控件的属性信息,且不能像ViewState那样被关闭。下一页返回上一页任务一使用多种方式进行状态管理5.查询字符串查询字符串的方式是将要传递的值连接在URL后面,然后通过Response.Redirect方法实现客户端的重定向,这种方式可以实现在两个页面之间传递信息。返回上一页任务二身份验证和授权【任务要点】1.应用身份验证措施2.<authentication>节点3.基于Windows的身份验证【案例1】设置用户账户对站点的访问权限下一页返回任务二身份验证和授权【具体步骤】(1)创建用户。①在WindowsXP或WindowsServer2003服务器上,选择【开始】→【控制面板】→【管理工具】→【计算机管理】命令,弹出【计算机管理】窗口。②展开【系统工具】节点。③展开【本地用户和组】节点。④打开【用户】文件夹,结果如图7-12所示。⑤右击【用户】文件夹,在弹出的快捷菜单中选择【新用户】命令、弹出【新用户】对话框,如图7-13所示。⑥给用户指定名称、密码和描述(说明这是一个测试用户)。这个例子把用户命名为zhubm。⑦取消需要用户在下次登录时修改密码的复选框的选中状态。下一页返回上一页任务二身份验证和授权⑧单击【创建】按钮,就创建了测试用户,它会显示在【计算机管理】实用程序的【用户】文件夹中,如图7-14所示。(2)用户的身份验证和授权。①打开应用程序EShopTest根目录下的Web.Config文件,在Web.Config中添加代码。②将Default.aspx页面设为起始页,运行程序,出现结果如图7-15所示。③对Web.Config文件中的代码作如下更改:<system.web><authenticationmode="Windows"/><authorization><allowusers="zhubaiming\zhubm"/>下一页返回上一页任务二身份验证和授权<denyusers="*"/></authorization></system.web>④注销计算机,使用新建用户“zhubm”登录计算机。⑤打开EShop应用程序运行,出现结果如图7-16所示。下一页返回上一页任务二身份验证和授权【案例2】

设置用户组对站点的访问权限【具体步骤】(1)打开计算机管理实用程序(选择【开始】→【控件面板】→【管理工具】→【计算机管理】命令),访问在服务器上定义的组列表。单击【计算机管理】实用程序中的【组】文件夹,就会显示组的列表,如图7-17所示。(2)右击【组】文件夹,在弹出的快捷菜单中选择【新建组】命令,弹出【新建组】对话框,如图7-18所示。下一页返回上一页任务二身份验证和授权(3)创建一个组,指定它的名称为“MyGroup”和描述“EShopTest允许访问的用户组测试”,然后单击【添加】按钮,选择要成为该组中成员的用户。(4)创建组后,将在Web.Config文件中添加如下代码:

<allowroles="MyGroup"/>(5)注销计算机,用“MyGroup”组中的用户登录系统,打开EShop应用程序运行即可访问网站的页面。下一页返回上一页任务二身份验证和授权【背景知识】1.Web.ConfigWeb.Config文件是一个XML文本文件,它用来储存ASP.NETWeb应用程序的配置信息(如最常用的设置ASP.NETWeb应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当通过VB.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.Config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果想修改子目录的配置设置,可以在该子目录下新建一个Web.Config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。下一页返回上一页任务二身份验证和授权2.<authentication>节点在应用程序的Web.Config文件中使用<authentication>节点,可以设置ASP.NET应用程序需要的身份验证类型。

<system.web><authenticationmode="Windows|Forms|Passport|None"></authentication></system.web><authentication>节点用mode属性设置要使用的身份验证模式。其选项包括Windows、Forms、Passport和None。表7-2解释了这些选项。3.<allow>和<deny>节点详解

<allow>和<deny>节点不仅可以操作特定的用户,还可以操作组。这两个元素支持表7-3中的属性。返回上一页任务三根据数据库中的值进行验证和窗体身份验证【任务要点】1.基于窗体的身份验证2.根据数据库中的值进行验证【案例1】使用数据库中的值验证和窗体身份验证限制用户对特定页面的访问下一页返回任务三根据数据库中的值进行验证和窗体身份验证【具体步骤】(1)制作管理员登录页面。①打开EShopTest应用程序,在Admin文件夹下新建页面,并命名为AdminLogin.aspx。②在页面中插入布局表格,并设置表格背景(背景图片位于应用程序的images文件夹中),完成后设计模式下的页面如图7-19所示。③添加输入管理员账号和密码的两个TextBox并分别更改ID为txtAName、txtPwd。设置txtPwd的TextMode属性为Password。④添加两个RequiredFieldValidator控件,控件属性设置见表7-4。⑤添加Button控件并更改其ID属性为btnLogin,Text属性为“登录”。⑥添加btnLogin的btnLogin_Click事件下一页返回上一页任务三根据数据库中的值进行验证和窗体身份验证

登录窗体制作完成后运行效果如图7-20所示。【背景知识】FormsAuthentication类

FormsAuthentication类有许多方法和属性,可以读取和控制验证Cookie以及其他信息(例如请求的返回URL)。表7-5列出了FormsAuthentication类的一些方法和属性。返回上一页任务四通过IIS进行保护站点【任务要点】1.IP地址和域名限制2.使用文件扩展名【案例1】设置IIS目录安全允许特定的IP地址对网站的访问【具体步骤】(1)可打开IIS管理器,右击【默认网站】节点,从弹出的快捷菜单中选择【属性】命令,在弹出的对话框中打开【目录安全性】选项卡,如图7-21所示。下一页返回任务四通过IIS进行保护站点(2)单击【IP地址和域名限制】选项区域中的【编辑】按钮,会打开一个对话框,如图7-22所示。(3)在对话框中选中【拒绝访问】单选按钮,然后单击【添加】按钮,弹出【授权访问】对话框,在对话框的【网络标识】和【子网掩码】文本框中输入要限制的IP地址和子网掩码,如图7-23所示。下一页返回上一页任务四通过IIS进行保护站点【案例2】设置用户对具有特定扩展名文件的访问权限【具体步骤】(1)在IIS管理器中右击【默认网站】节点,在弹出的快捷菜单中选择【属性】命令,在弹出的对话框中打开【主目录】选项卡。如图7-24所示。(2)单击【应用程序设置】选项区域的【配置】按钮,弹出【应用程序配置】对话框,如图7-25所示。在【应用程序扩展】选项区域中选择扩展名为“.aspx”的行,然后单击【删除】按钮。单击【确定】按钮后,网站中扩展名为“.aspx”的页面就会被拒绝访问。下一页返回上一页任务四通过IIS进行保护站点(3)现在来恢复可以访问网站中扩展名为“.aspx”的页面:单击【应用程序扩展】对话框中的【添加】按钮,弹出对话框如图7-26所示。在对话框中填写相关信息,如图7-27所示。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论