《ASP NET程序设计案例教程》课件第8章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《ASP NET程序设计案例教程》课件第8章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASP NET程序设计案例教程 ASP NET程序设计案例教程课件第8章 ASP NET 程序设计 案例 教程 课件
- 资源描述:
-
1、第8章 模块7站点发布8.1 【任务任务15】站点发布站点发布【本章提要本章提要】当Web应用系统开发完成后,需要交付给客户一个完整的安装包文件,以方便客户将应用系统部署到指定的Web服务器中。本章围绕该站点发布任务的实现,介绍了Web应用系统的认证与授权,并详细阐述了系统跟踪与检测的方法。【学习目标学习目标】掌握Web的认证与授权。掌握系统跟踪检测的方法。掌握站点打包和发布的步骤。任务描述任务描述在校园在线超市系统的开发过程中,为了减少应用程序的性能开销,将商品栏目做成用户控件缓存起来,以后的请求将访问缓存信息,并对站点进行安全配置;在站点开发完成之后,需要交付给客户一个完整的安装包文件,以
2、便客户方便地通过Windows安装包将站点部署到指定的Web服务器中。8.1 【任务任务15】站点发布站点发布 必备知识必备知识知识知识1 Web的认证与授权的认证与授权因特网虽然是一个面向全球的开放型网络系统,但有些网页并不是对所有用户都无条件开放的。例如,一些用于公司内部管理的网页只对公司内部的人员开放,有些网站设立的收费项目只对那些进行了注册,并交纳了费用的用户开放,有些商业网站实行“会员制”,只有经过注册的会员才有权参见某些商业交易活动。这些类似的情况都给网站设计提出了新的要求:为了网站的合法权益和网络安全,必须对一些特定的网页实施保护,当用户进入时要进行身份认证,并在认证的基础上分配
3、资源。1Web的认证的认证1)Web的认证机制认证是一个过程,用户可以通过这个过程来验证他们的身份,通过系统验证后的标识可以定位到唯一的用户。通常情况下,用户需要输入其用户名与密码,或者根据已有凭据进入登录页面。ASP.NET提供了三种不同的认证机制,如表8-1所示。表8-1 三种认证机制通过这三种不同的机制,可以使用不同的方式来保存用户的登录信息,包括用户密码等敏感数据。在应用程序中启用认证,即在Web.config文件的/节点中进行配置,其代码如下:.其中,mode是必选属性。mode指定应用程序的默认身份认证模式,可选值为Windows、Forms、Passport或None,默认值为W
4、indows。Windows:将Windows认证指定为默认的身份认证模式。将它与以下任意形式的IIS身份认证结合起来使用:基本、摘要、集成Windows身份认证或证书。在这种情况下,应用程序将身份认证责任委托给IIS。Forms:将ASP.NET基于窗体的身份认证指定为默认身份认证模式。Passport:将Microsoft Passport Network身份认证指定为默认身份认证模式。None:不指定任何身份认证,应用程序仅支持匿名用户,否则它将提供自己的身份认证。2)ASP.NET中的认证过程在ASP.NET中,认证和授权都可以看做是在处理一系列的模块。ASP.NET认证和授权过程如图
5、8-1所示。图8-1 ASP.NET认证和授权过程当从IIS传递一个请求时,ASP.NET将初始化HttpRuntime、HttpApplication、HttpContext等一系列对象。在整个请求生命周期中,HttpContext对象用于传递有关请求和响应的详细信息。创建HttpApplication对象后,系统首先执行认证模块,通过这些模块的执行,将会更改HttpContext对象中的User属性。认证模块执行完成之后,接着执行授权模块。在执行过程中,ASP.NET只加载一个身份认证模块,这取决于该配置文件的authentication元素中指定了哪种身份认证模式。该身份认证模块创建一个
6、IPrincipal对象,并将它存储在HttpContext.User属性中,其他授权模块则使用这个对象做出授权决定。3)Windows认证如果用户在Intranet上,且他们已经被分配域账户和组,就可以使用Windows身份认证。在使用Windows认证时,IIS首先向操作系统请求身份认证。通过后,IIS将向ASP.NET传递代表身份认证的用户或匿名用户账户的标识。该标识被包含在IPrincipal对象的Identity子对象中,且可以通过HttpContext.User属性来访问IPrincipal对象和Identity对象。启用Windows认证来保护ASP.NET网站有两个步骤:配置I
7、IS。在Web.config中设置身份验证。(1)配置IIS配置IIS使用匿名身份验证和一个或多个下面的身份验证机制:基本。摘要式。集成Windows。(2)设置身份认证在Web.config中节的子节中,设置身份认证方法为Windows身份认证,代码如下:4)Forms认证Windows认证仅仅是当用户拥有Microsoft Windows账户时才有用。如果正在构建一个基于Internet的ASP.NET站点,则使用Windows认证显然不行。因此,你可能会想到在其他地方存储用户账户而不是存储在操作系统中,如将用户凭据存储在数据库中。事实上,在多数情况下,都需要建立自己的用户管理和存储机制。
8、Forms认证模式能够让你轻易地创建这样一个自定义的安全机制,并安全地执行它。(1)Forms认证机制Forms认证使用用户登录到站点时创建的身份认证信息,然后在整个站点内跟踪该用户。身份认证信息通常包含在一个Cookie中。然而,ASP.NET 2.0版支持无Cookie Forms身份认证,所以将身份认证信息保存在查询字符串中。如果用户请求一个需要经过身份认证的访问页,且该用户以前没有登录过该站点,则该用户重定向到一个配置好的登录页。该登录页提示用户提供凭据(通常是用户名和密码),然后,将这些凭据传递给服务器,并针对用户存储进行认证。在ASP.NET2.0中,用户存储访问可由成员身份提供程
9、序处理,对用户的凭据进行身份认证后,用户重定向到原来请求的页面。Forms认证的过程如图8-2所示。图8-2 Forms认证过程该流程的详细说明如下:用户请求应用程序的虚拟目录下的Default.aspx文件。因为IIS中启用了匿名访问,因此IIS允许该请求。服务器查找一个身份认证Cookie。如果找不到该身份认证Cookie,则用户重定向到配置好的登录页(Login.aspx),该页由forms元素的LoginUrl属性指定。用户通过该页面提供和提交凭据。浏览器请求Login.aspx页,并在查询字符串的RETURNURL参数中包括起始页的相关信息。服务器返回登录页以及200 OK HTTP
10、状态代码。用户在登录页输入凭据,并将该页发送回服务器。服务器根据某个存储认证用户凭据。登录页中的代码创建一个包含为该会话设置的Forms身份认证信息的Cookie。在ASP.NET 2.0中,可以通过成员身份系统执行对用户凭据的认证。对于经过身份认证的用户,服务器将浏览器重定向到查询字符串中的RETURNURL参数指定的原始URL。重定向之后,浏览器再次请求Default.aspx页。该请求包括身份认证Cookie。FormsAuthenticationModule类检测Forms身份认证Cookie,并对用户进行身份认证。身份认证成功后,FormsAuthenticationModule类使
11、用有关经过身份认证的用户的信息填充当前的User属性。由于服务器已经验证了身份认证Cookie,因此它允许访问并返回Default.aspx。(2)在Web.Config中配置Forms认证当配置Forms认证的时候,可以指定一个登录页面。当用户对应用程序中的页面发出请求时,如果他们没有通过认证,就会被重定向到登录页面,在那里他们能够输入凭据。对于输入的凭据,必须通过编写代码进行相应处理。当用户通过认证后,就被重定向到他们最初所请求的页面。以下配置文件片段显示了如何在Web.Config中设置Forms认证:5)Passport认证Passport认证是一种Microsoft提供的集中认证服务
12、。用户可以使用Microsoft.NET Passport来访问服务,如Hotmail、Messenger。如果用Passport服务注册了自己的站点,用户就可以使用相同的Passport来访问自己的站点,不需要记住不同系列的凭据。表8-2 Forms认证配置项说明2Web的授权的授权在用户通过认证,并能够访问Web站点之后,应用程序必须确定用户可以访问的页面和资源,即授权。在ASP.NET中包括文件授权和URL授权。1)文件授权文件授权是Windows操作系统提供的一种授权机制,我们可以为NTFS文件系统格式的盘符中的任意文件或者文件夹设置权限。这些权限存储在访问控制列表(ACL)中,这个列
13、表是与文件存储在一起的。ASP.NET文件授权模块可以使用这些权限来控制对Web应用程序中资源、页面和文件夹的访问。要使用File授权,需要首先配置应用程序,使其可以使用Windows认证,然后为Web站点中的文件和文件夹分配权限。在Web.Config文件中,将系统配置为Windows认证和文件授权,并且在Web站点中指定相应目录或文件的权限,那么,整个认证和授权的过程将在ASP.NET的帮助下自动完成。2)URL授权通过URL授权可以显式地允许或拒绝某个用户名和角色对特定目录的访问权限。为此,应在该目录的配置文件中创建一个authorization节。若要启用URL授权,可在配置文件的au
14、thorization节中的allow或deny元素中指定一个用户或角色列表。为目录建立的权限也会应用到其子目录,除非子目录中的配置文件重写这些权限。Authorization节的基本格式如下:Allow与deny元素必选其一,分别表示授予访问权限和撤销访问权限。users与roles必选其一,也可同时包含二者,verbs属性为可选项,其属性说明如表8-3所示。表8-3 authorization中元素属性说明下面的例子对Rose用户和Admins角色的成员授予访问权限,对John用户(除非Admins角色中包含John用户)和所有匿名用户拒绝访问权限。下面的例子允许对John用户授予访问权限
15、,并拒绝所有其他用户的访问权限。下面的例子允许对John用户、Kim用户授予访问权限。下面的例子允许所有用户对某个资源执行HTTP GET操作,但是只允许Rose用户执行POST操作。由于系统中存在多个配置文件,因此在执行时可能要对这些配置项进行合并。合并的规则如下:应用程序级别的配置文件中包含的规则优先级高于继承的规则。系统通过构造一个URL的所有规则的合并列表,规则的优先级别由列表中规则的排列顺序所确定。给定应用程序的一组合并的规则,ASP.NET从列表头开始检查规则,直至找到第一个匹配项为止。ASP.NET的默认配置包含向所有用户授权的元素。如果其他授权规则都不匹配,则允许该请求。如果找
16、到匹配项,并且它是deny元素,则向该请求返回401 HTTP状态代码。如果与allow元素匹配,则模块允许进一步处理该请求。还可以在配置文件中创建一个location元素,以指定特定文件或目录,location元素中的设置将应用于这个文件或目录。3利用控件创建安全页利用控件创建安全页ASP.NET 2.0 提供了一组用户管理控件,这些控件中大多数都不是单一的标准控件,而是多个控件的组合。利用这些控件可以非常方便地完成用户的认证和授权。这些控件包括:Login:用户登录控件。CreateUserWizard:创建新用户控件。LoginView:登录视图控件。LoginName:登录用户名控件。
17、LoginStatus:登录状态控件。ChangePassword:改变密码控件。PasswordRecovery:恢复密码控件。1)用户登录控件用户登录控件(Login)是基于角色的安全技术的核心控件。该控件的作用是进行用户认证,确定新到的用户是否已经登录。该控件的界面如图8-3所示。图8-3 用户登录控件的界面该控件的代码如下:Login控件实质上是一个“用户控件”,它不仅生成了显示界面,还定义了相应的行为。它为ASP.NET网站进行了安全配置后会自动生成ASPNETDB数据库,而且数据表的表名、字段名以及位置都已经固定,因此只要将Login控件拖入到页面中,不需要编写任何代码,也不需设置
18、任何其他属性就可以使用。表8-4 Login控件的属性表8-5 Login控件的常用方法2)创建新用户控件利用CreateUserWizard(创建新用户)控件可以在登录表中增添新用户,并为新用户登记相应的参数。该控件的界面如图8-4所示。图8-4 创建新用户控件界面该控件的代码如下:在ASP.NET 2.0中,对密码的设置比较严格。默认情况下,密码的设置符合“强密码”的要求。强密码必须满足:至少7个字符。字符中至少包括一个大写或小写的字母。字符中至少包括一个非数字亦非字母的特殊符号,如“!”、“”、“#”、“$”、“.”等。3)登录状态与登录用户名控件一般的登录模块,当用户成功登录后,会显示
19、用户当前登录的身份,比如“欢迎*用户登录”的提示,而同时会显示“LOGOUT(退出)”的提示。可以使用LoginName和LoginStatus控件来实现这一功能。LoginName用来显示注册用户的名字,通过FormatString属性可以增加一些格式的描述。如果用户没有被认证,这个控件就不会在页面上产生任何输出。而“LoginStatus(登录状态)”控件则提供了一个方便的超链接,它会根据当前验证的状态,在登录和退出操作之间进行切换。如果用户尚未经过身份认证,则显示指向登录页面的链接;如果用户已经进行了身份验证,则显示使该用户能够退出的链接。利用不同的属性,这两个显示的内容都是可以被修改的
20、。通常可以根据登录和退出的状态在控件上加上照片等个性化的东西。这两个控件的代码如下:4)登录视图控件在早期的版本里,区分不同角色、浏览不同页面需要用代码来实现,这样做比较麻烦。ASP.NET2.0提供了一个十分有用的控件,即LoginView。LoginView结合导航控件能够根据当前用户的角色自动显示不同的导航界面,实现基于角色的网站浏览功能。默认情况下,该控件只包括两个模板:匿名(未登录)模板(Anonymous)和已登录模板(LoggedIn),可以对匿名用户和已登录的用户分别显示不同的导航界面。如果在应用项目中设置了多个不同的角色时,控件将自动增加不同的模板,用来为不同角色显示不同的导
21、航界面。每个登录后的用户将只能按照自己所充当的角色查看自己权限以内可以访问的网页,从而可以直观地保护网页。然而这只是视图上的保护,并不能代替Web.config文件的作用。一些用户还有可能直接利用URL进入受保护的网页。因此视图的保护还应该和Web.config相结合才能既有效又方便地保护网页。5)恢复密码控件和改变密码控件有开发经验的人都知道,在以前,如果用户忘记了密码而要重新获得密码是比较麻烦的事情,为了实现这一功能,需要编写代码,包括认证用户、检查数据库、修改数据库等。ASP.NET 2.0提供了一个很有吸引力的控件,即PasswordRecovery(恢复密码)控件。该控件能够通过电子
22、邮件来帮助恢复忘记的密码。只要用户在注册时正确地填写了邮箱地址,且配置正确并在该控件里提交了请求,它就会自动把密码发送到你的邮箱中。图8-5 恢复密码控件界面 图8-6 改变密码控件界面PasswordRecovery控件提供了三种模板:UserName,用于初始化控件,用户需要在这里填上登录名。Question,在用户寻找遗忘的密码时必须回答的问题。Answer,用于当用户输入的密码正确,或者已经用E-mail发给用户的时候。在PasswordRecovery控件中,还有一些重要的事件:BeforeUserLookup,当用户查找用户资料的时候被激发。可以设定个人测试条件取消这个过程。Use
23、rLookupError,当用户名不存在时激发。BeforeAnswerLookup,在用户输入了答案并且被验证后激发。AnswerLookupError,当输入答案错误时被激发。BeforeSendMail,在邮件发送之前被激发。4直接调用直接调用Membership API方法方法为了对成员身份进行更高级别的控制,可以直接使用Membership API方法。在System.Web.Security命名空间中主要包括两个类:Roles类和RolePrincipal类。Membership API是Membership类中公有的方法,利用这些方法能够完成以下工作:创建新用户、更改密码、搜索与
24、特定条件匹配的用户、创建角色、删除角色、读取所有角色、读取某个用户分配的角色和读取某个角色的用户等。下面的例子说明了Membership类的一些常用的方法。1)创建新用户在页面中添加6个文本框以及一个按钮,其中:TextBox1用于输入新用户名。TextBox2用于输入新用户密码。TextBox3用于输入新用户的E-mail。TextBox4用于输入安全提示问题。TextBox5用于输入回答问题。Label1用于输出提示错误。按钮的代码如下:protected void Button1_Click(object sender,EventArgs e)if(this.IsValid)Member
25、shipCreateStatus status;MembershipUser user=Membership.CreateUser(this.TextBox1.Text,TextBox2.Text,TextBox3.Text,TextBox4.Text,TextBox5.Text,false,out status);switch(status)case MembershipCreateStatus.Success:FormsAuthentication.RedirectFromLoginPage(user.UserName,false);break;case MembershipCreateS
展开阅读全文