第十讲身份验证授权和登录控件ppt课件.ppt

上传人:本田雅阁 文档编号:3171033 上传时间:2019-07-20 格式:PPT 页数:61 大小:853.03KB
返回 下载 相关 举报
第十讲身份验证授权和登录控件ppt课件.ppt_第1页
第1页 / 共61页
第十讲身份验证授权和登录控件ppt课件.ppt_第2页
第2页 / 共61页
第十讲身份验证授权和登录控件ppt课件.ppt_第3页
第3页 / 共61页
第十讲身份验证授权和登录控件ppt课件.ppt_第4页
第4页 / 共61页
第十讲身份验证授权和登录控件ppt课件.ppt_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《第十讲身份验证授权和登录控件ppt课件.ppt》由会员分享,可在线阅读,更多相关《第十讲身份验证授权和登录控件ppt课件.ppt(61页珍藏版)》请在三一文库上搜索。

1、身份验证、授权和登录控件,西源软件培训中心,回顾,母版页 母版页所在位置 嵌套母版页 内容页 样式 外观 主题及配置文件 主题和外观内容 主题和外观作用,课程目标,理解身份验证 理解Windows集成认证 掌握Forms验证 理解身份授权 理解基于角色的安全技术的特点 掌握ASP.NET 2.0基于角色的安全技术的特点 理解基于角色的安全技术的准备工作 掌握利用控件创建安全页 理解登录成员资格服务 掌握用户管理 掌握角色管理 理解使用成员资格和角色管理器API,用户注册及登录,基本上所有系统都需要实现用户的注册、登录、修改用户密码等功能。,身份验证和授权的需求,ASP.NET 2.0 的成员和

2、角色管理简化了用户管理的功能,用户的管理和验证只与提供者打交道,而不需要关注数据库本身的细节。 现在 ASP.NET 2.0 包含对成员资格(用户名/密码凭据存储)和角色管理服务开箱即用的内置支持。由于所有这些服务都是提供程序驱动的,因此可以方便地交换出再用开发人员自己的自定义实现替换。,身份验证概念,身份验证(authentication)是一个标识应用程序客户端的过程,这里的客户端可能包括终端用户、服务、进程或计算机,通过了身份验证的客户端被称为主体(principal)。 身份验证可以跨越应用程序的多个层发生。终端用户起初由Web应用程序进行身份验证,通常根据用户名和密码进行;随后终端用

3、户的请求由中间层应用程序服务器和数据库服务器进行处理,这这个过程中也将进行身份验证以便验证并处理这些请求。,ASP.NET身份验证模式,与Microsoft Internet信息服务(IIS)一起使用的ASP.NET可以使用以下任意一种身份验证方式来验证用户凭据(如用户名和密码): Windows:基本、摘要式或集成Windows身份验证(NTLM或Kerberos)。 Forms身份验证,可以通过该身份验证在应用程序中创建登录页并管理身份验证。 Microsoft Passport身份验证。 None。,基于Windows的身份验证,如果应用程序使用Active Directory用户存储,

4、则应该使用集成的Windows身份验证。 对ASP.NET应用程序使用集成Windows身份验证时,最好的方法是使用ASP.NET的Windows身份验证提供程序附带的Internet信息服务(IIS)身份验证方法。,基于Windows的身份验证,如ASP.NET针对Windows身份验证进行配置,具体启用配置参见以下代码: ASP.NET依靠IIS,利用配置好的身份验证模式对其客户端进行身份验证。IIS通过检查特定应用程序的原数据库设置来确定其身份验证模式。 集成Windows身份验证最适合于Intranet环境,其中的客户端计算机和Web服务器计算机都是相同(即信任的)域的一部分。,基于W

5、indows的身份验证示例,创建一个基于Http类型的网站。 添加一个“添加新项”按钮,添加一个Web配置Web.Config文件。 在Web.Config中设置验证方式为Windows: 添加一个Web窗体页,在Page_Load事件中输入以下代码: 在运行本例子之前,需要在IIS的“目录安全性”选项卡中禁止匿名访问,启用“Windows集成身份验证”。具体设置,在IIS中选择当前项目应用程序的虚拟文件夹,右键选择“属性”。在“属性”对话框中,选择“目录安全性”,如图所示。 点击匿名访问和身份验证控制中的“编辑”,弹出“身份验证方法”对话框,如图所示。 在图中去掉“匿名访问”选项,选中“集成

6、Windows身份验证”。 当用户以http:/127.0.0.1/WindowsAuthSite/WindowsAuthLogin.aspx 访问时,会提示用户输入用户名和密码,ASP.NET应用程序会以指定的帐号身份运行,protected void Page_Load(object sender, EventArgs e) Response.Write(“ HttpContext_User 信息:“); Response.Write(“页面当前用户 HttpContext_User:“ + System.Web.HttpContext.Current.User.Identity.Name

7、); Response.Write( “页面当前用户身份验证是否成功 HttpContext_User:“ + System.Web.HttpContext.Current.User.Identity.IsAuthenticated); Response.Write( “页面当前用户身份验证方式 HttpContext_User:“ + System.Web.HttpContext.Current.User.Identity.AuthenticationType); Response.Write(“ OperatingSystem_ThreadIdentity 信息:“); Response.

8、Write( “系统用户标识名字 OperatingSystem_ThreadIdentity:“ + System.Security.Principal.WindowsIdentity.GetCurrent().Name); Response.Write( “系统用户身份验证是否成功 OperatingSystem_ThreadIdentity:“ + System.Security.Principal.WindowsIdentity.GetCurrent().IsAuthenticated); Response.Write( “系统用户身份验证方式 OperatingSystem_Thre

9、adIdentity:“ + System.Security.Principal.WindowsIdentity.GetCurrent().AuthenticationType); ,基于窗体的身份验证,基于窗体的身份验证是一项ASP.NET身份验证服务,它使应用程序能够提供自己的登录用户界面并进行自己的凭据验证。ASP.NET对用户进行身份验证,将未经身份验证的用户重定向到登录页,并执行所有必要的Cookie管理。 应用程序必须配置为使用基于窗体的身份验证,方法是将设置为Forms,并拒绝匿名用户访问。 下面的示例演示如何在所需应用程序的Web.config文件中完成此操作: ,元素,基于窗

10、体的身份验证来配置要使用的Cookie的名称、保护类型、用于登录页的URL、Cookie有效的时间长度,以及用于已发出的Cookie路径。 下表显示元素的有效属性,该元素是下面示例中显示元素的子元素: ,元素,Forms验证示例,在Web.Config配置了应用程序后,配置见下面代码,需要提供一个登录页。比如在示例中添加一个简单的登录页。该示例在运行时需要Default.aspx页。未经身份验证的请求被重定向到登录页(Login.aspx),该页显示一个简单窗体,提示用户输入电子邮件地址和密码。(使用Username=““和Password=“tsinghuait“作为凭据。) ,Forms验

11、证示例,验证了凭据后,应用程序调用以下内容(userEmail是TextBox控件,PersistCookie是CheckBox控件): FormsAuthentication.RedirectFromLoginPage(UserEmail.Value, PersistCookie.Checked),Forms身份验证的不同情况处理,第一种情况,整个站点都需要登录才能访问,但需要有注册页面,实现方法如下。 在应用程序根目录下的配置文件Web.Config中的配置为: 在根目录下创建了Login.aspx,为了便于查看,采用图文结合模式 。 以上情况在做后台管理程序时也是可以使用的 。,Form

12、s身份验证的不同情况处理,第二种情况,有权限的页面和没有权限的页面混合在一起,在此情况下,需要去掉配置文件中拒绝节。 具体内容如下: 然后,每个需要验证的页面都需要开发人员自己进行判断是否通过验证,其部分代码如下: protected void Page_Load(object sender, EventArgs e) if (HttpContext.Current.User.Identity.Name = “) Response.Redirect(Request.ApplicationPath + “/login.aspx?url=“ + Request.Url.ToString(); ,F

13、orms身份验证的不同情况处理,第三种情况,不同的目录使用不同的登录页面。 先设置Web.Config内容,设置每个子文件或者目录的配置信息,具体可参见一下: 接着,创建不同用户的登录页面“CommonUserLogin.aspx”和“AdminUserLogin.aspx”,页面上包含登录用表单。 然后,创建不同用户可以访问的目录“CommonUser”和“AdminUser”。 最后,在Login.aspx页面中,对转过来的地址进行判断,判断其来路,然后再进行转向到不同的登录文件。 protected void Page_Load(object sender, EventArgs e) s

14、tring comeFromUrl = “; if (Request.QueryString“url“ != null) /下面这个过程是分解所在的目录,这里可以根据实际情况看是否处理。 comeFromUrl = Request.QueryString“url“; comeFromUrl = comeFromUrl.Remove(0, Request.ApplicationPath.Length + 1); comeFromUrl = comeFromUrl.Substring(0, comeFromUrl.IndexOf(“/“,0); Response.Redirect(comeFrom

15、Url + “login.aspx?url“ + Request.QueryString.ToString(); ,Forms身份验证所使用的Cookie由System.Web.Security.FormsAuthenticationTicket类的序列化版本组成。信息包括用户名(但没有密码)、使用的Forms身份验证版本、发出Cookie的日期以及可选的应用程序特定数据的字段。 通过使用FormsAuthentication.SignOut方法,应用程序代码可以撤消或移除身份验证Cookie。这将移除身份验证Cookie,不论它是临时的还是永久的。,Forms身份验证的不同情况处理,在验证凭

16、证中存储自定义信息,在Forms身份验证的票证中可以UserData属性中存储自定义信息,但是,这些信息必须确保UserData属性的大小不会导致Cookie或过长。 if (userName.Text.Trim() = “tsinghuait“) ,在其他的任何页面,就可以取得自定义的信息了。 protected void Page_Load(object sender, EventArgs e) if (User.Identity != null) FormsAuthenticationTicket FormAt = (FormsIdentity)User.Identity).Ticket

17、; Response.Write(“自定义信息:“ + FormAt.UserData); ,授权用户和角色,ASP.NET用于控制对URL资源的客户端访问。它对于生成请求的HTTP方法(GET或POST)是可配置的,并且可配置为允许或拒绝访问用户组或角色组。 下面的示例演示向名为someone的用户和名为Admins的角色授予访问权。所有其他用户的访问被拒绝。 允许的授权指令元素为allow或deny。每个allow或deny元素都必须包含users或roles属性。通过提供一个逗号分配的列表,可在单个元素中指定多个用户或角色。 有两个特殊的用户名,见表,基于角色的安全技术,互联网(Inte

18、rnet)虽然是一个面向全球的开放型网络系统,然而其中有些网页并不是对所有用户都无条件开放的。例如: 一些用于公司内部管理的网页只对公司内部的人员开放; 有些网站设立的收费项目,只对那些进行了注册并交纳了费用的用户开放; 有些商业网站实行“会员制”,只有经过注册的会员,才有权参加某些商业交易活动; 一些远程教育网站允许学生查阅自己的成绩但不允许修改成绩。 类似的情况还可以列出很多,这些情况给网站的设计提出了新的要求:为了网站的合法权益和网络安全,必须对一些特定的网页实施保护;当用户进入时要进行身份认证,并在认证的基础上分配资源。,基于角色的安全技术,基于角色的安全技术目前已经成为大多数网站必备

19、的功能,然而设计这项功能并不简单,若使用传统的方法,需要使用十几个标准控件,编写上百行代码,并经过反复的调试才能完成。现在ASP.NET 2.0与IIS服务器相结合,在框架的支持下,对传统的方法做了很大的改进,系统提供了强大的工具和若干组合控件。利用这些工具可以采用简易的方法,快速开发出功能完备的具有基于角色的安全技术的程序。 围绕基于角色的安全技术,本章将讲述以下几方面的内容: 基于角色的安全技术的特点 ASP.NET 2.0基于角色的安全技术的新特点 基于角色的安全技术的准备工作 利用控件创建安全网页 直接调用Membership API 方法,基于角色的安全技术,基于角色的安全技术的特点

20、 ASP.NET 2.0基于角色的安全技术的特点 基于角色的安全技术的准备工作 利用控件创建安全页 直接调用Membership API方法,基于角色的安全技术的特点,网站中可以包括多个入口 基于角色的安全技术是有层次的,网站中可以包括多个入口,在桌面系统中,由于入口点比较集中,因此为了保护某些窗体,主要方法就是先给用户建立注册表,表中载入用户的相关信息,然后在窗体的入口处设置登录界面来检查来访的用户,看看该用户是否在注册表中注册,如果已经注册再看看属于什么身份,然后根据其身份跳转到相应的入口。 然而网站与此不同,它是一个开放型的系统,很多网页都有自己的URL,用户通过URL可以直接访问这些网

21、页,因此网站的入口点很多。这种情况下,即使设置了登录网页,用户还可以绕过它直接进入其他网页。因此,为了保护网页需要给这些网页实施保护,或者先将它们集中到某个子目录下,再给该目录实施保护。,基于角色的安全技术是有层次的,基于角色的安全技术是有层次的。例如,有些网页只对一部分人员开放,而这部分被允许访问的人员中允许访问的范围也是有区别的。应该根据人员的分工或职务进一步给他们分配资源。 为了管理用户,应该先将用户划分成登录用户和非登录用户,再将登录的用户区分成不同的“角色”,并为这些“角色”赋予不同的访问权限。这些权限有的还需要不定时地进行调整。以交费网页为例,用户交费以前和交费以后的访问权限是不同

22、的。 在传统的基于角色的安全技术中,首先要给被保护的网页设置保护措施(如用Session对象进行保护等),并且给用户建立注册表,在注册表中注明用户的姓名、密码以及分配的角色等。 用户的认证实质上是一个查询过程。当用户进入登录页面时,先要求用户输入自己的姓名和密码,然后到注册表中去查询。如果在表中找到了可以匹配的记录时,说明该用户已经进行了注册,然后取出用户对应的角色字段,根据分配给角色的权限让用户转入相应的网页。,ASP.NET 2.0基于角色安全技术特点,在ASP.NET 2.0中,为了进行用户管理和保证网页安全,系统提供了完善的服务。包括提供了一个网站管理工具和7个组合控件。当给网站配置好

23、安全设置以后(见下一个问题)系统还将在应用程序的“App_Data”专用目录下创建专用数据库(通常取名为ASPNETDB.MDF)和若干专用数据表,这些表包括用户的注册信息、角色信息以及为个性服务所需要的信息等。系统不仅自动建立了这些表格,还将自动存入这些信息,在注册表中进行查询等项工作全面地实现了自动化。在这些工具的支持下,设计者只需做一些简单的设置,就能设计出功能比较完备的应用基于角色的安全技术的网页。,ASP.NET 2.0基于角色安全技术特点,在ASP.NET 2.0中基于角色的安全技术包括以下两方面的工作。 用户认证方面 创建新用户 登录用户 用户修改密码 恢复用户密码 状态和其他有

24、关信息 权限管理方面 给用户划分角色 给角色分配资源,基于角色的安全技术的准备工作,组织好站点中的文件 利用网站管理工具进行安全配置,组织好站点中的文件,为了集中入口点,最好建立若干子目录,并且将安全等级相同的网页放在同一个子目录下,然后在各个子目录的根目录下设置Web.config文件,利用该文件配置安全策略。这就好比一个单位中包括一些需要保密的部分,可以先将它们放到专门的办公楼里,并在办公楼的入口处设立保卫人员以检查来访的用户。Web.config文件就相当于各个办公楼的保卫人员。下图是一个目录分布的示意图。 其中从上而下: 第一个Web.config文件用来保护admin目录下的文件;

25、第二个Web.config文件用来保护manager目录下的文件; 第三个Web.config文件用来保护网站根目录下的文件; Web.config文件之间的定义有继承关系,若子目录的定义不同于父目录时,子目录下的文件按照子目录的定义执行。,利用网站管理工具进行安全配置,利用网站管理工具进行安全配置,利用网站管理工具进行安全配置,网站的安全设置包括增加“用户”(User)、定义“角色”(Role)、指定“访问规则”(Access Rule)三大部分。可以利用下面的三个方框分别进行设置,也可以利用系统提供的“安全设置向导”的智能提示逐项进行设置。下面重点介绍使用安全设置向导来设置的 方法。 选择

26、【使用安全设置向导按部就班地配置安全性】,在出现的对话框中单击【下一步】进入第二步。 在【选择访问方法】对话框中提供了internet和intranet两种选择,这里选择【通过internet】项,再单击【下一步】。 在【高级提供程序设置】对话框中提示:若要更改应用程序的数据存储区,请退出【安全向导】,然后单击【提供程序配置】选项卡。使用【提供程序配置】选项卡可以配置网站管理数据的存储方式。这里不改变数据存储区,即仍然使用默认提供的SQL Server数据库存储数据。因此只要单击【下一步】即可。,利用网站管理工具进行安全配置,在步骤4中,系统会询问是否创建基于角色的应用,如果应用中需要用到角色

27、,就必须勾选【为此网站启用角色】复选框,然后单击【下一步】时,进入如图18.4所示的界面。 本界面中表示已经创建了2个角色(如果第一次创建,将不含任何角色),如果需要增加新角色时,先在【新角色名称】输入框中输入新角色名,然后单击【添加角色】按钮即可。如果需要删除某种角色时,只要单击该角色名右方的【删除】即可。处理完成以后单击【下一步】。 在步骤5中,要求增添新用户,在这一步中可以输入用户名,密码,E-mail等信息。具体做法将在下一节中讲述。单击【下一步】。 在步骤6中,要求确定访问的规则。此时弹出的界面所示。,利用网站管理工具进行安全配置,图中的左边窗口中列出的是网站的目录,中间窗口的【角色

28、】下拉列表中将列出角色名(下面为用户名),右方为访问权限(允许或拒绝)。将三者结合起来确定某角色(或用户)对某目录的访问权限。操作过程是:先确定角色(或用户),再确定权限,再选择目录,最后单击【添加此规则】按钮。 2对安全配置的调整 如果需要修改或重新调整安全配置,可以在进入安全配置的初始界面中,选择下面三个选项之一。 用户:用来增添、编辑或删除用户,还可以给用户分配角色; 角色:用来增添、编辑或删除角色; 访问规则:用来增加、编辑或删除访问规则。 为了给用户分配角色,回到配置工具中的【安全】选项卡,单击下面【用户】中的【管理用户】项进入如图1所示的界面。 分配用户的角色需逐个进行。单击某用户

29、右边的【编辑角色】时,将弹出已经存在的全部角色,单击复选框选中就代表分配了角色。一个用户可以分配0个或者多个角色。 检查访问权限的分配,回到配置工具中的【安全】选项卡,单击下面【访问规则】中的【管理访问规则】项进入如图2所示的界面。 单击左边的某个目录,然后查看右边分配的情况。图2中的结果是对于“manager”目录来说,允许“admin”与“manager”角色访问,但拒绝“sales”角色访问。如果这里显示的规则不符合需要,单击下面的【添加新访问规则】后进行调整。右边有【上移】和【下移】两个按钮,可以用来调整规则的顺序。顺序在这里是非常重要的。因为系统总是从上到下逐个匹配规则的,如果这些规

30、定中存在着矛盾时,只有第一个被匹配的规则有效。,利用网站管理工具进行安全配置,3安全配置的结果 上述安全配置产生了两个重要的结果。 (1) 在应用程序的各个目录下分别产生了web.config配置文件,文件中载入了对该目录的访问权限。例如Admin目录的web.config文件如下: 在中配置的顺序非常重要,系统总是按照从前向后逐条匹配的办法,并且执行最先的匹配 者。例如前面的顺序颠倒如下: 则所有的用户(包括roles=“admin“)都不允许访问该目录下的文件。所以应该注意调整好对某个目录配置的顺序。 利用这一特点,我们能够用非常简单的方法来调整用户的访问权限。例如在某些收费项目中,对于没

31、有交费或者交费到期的 用户,只要将该用户的保护字段放在“”之后,一旦交了费用时再将它的保护字段放到“” 的前面即可,不需要编写任何代码。 代码中“*”代表所有用户;“?”代表匿名用户。 (2) 应用程序的根目录下出现了一个专用的App_Data目录,在该目录下出现了一个专用的SQL Server数据库(名为ASPNETDB.MDF)。数据库中包括用于用户管理的若干专用数据表,这些数据表将自动记录登录用户、角色以及它们的相关数据。,利用控件创建安全页,用户登录控件 使用创建新用户控件 登录状态与登录姓名控件 登录视图控件 PasswordRecovery 控件和ChangePassword控件,

32、利用控件创建安全页,ASP.NET 2.0系统提供了一组用户管理控件,这些控件中大多数都不是单一的标准控件,而是多个控件的组合。利用这些控件可以非常方便地完成用户管理和基于角色的安全策略的设计工作。这些控件包括: Login用户登录控件 CreateUserWizard创建新用户控件 LoginView登录视图控件 LoginName登录用户名控件 LoginStatus登录状态控件 ChangePassword改变密码控件 PasswordRecovery恢复密码控件 这些控件不仅定义了初步外观(可以进一步修改),还定义了标准行为。例如,有的控件可以用来创建用户的注册、登录和密码恢复界面的外

33、形并实现其功能。也有一些控件主要用来向用户显示不同的信息。例如,利用 LoginView 控件可以定义不同的模板,将其显示给不同角色的成员等。,用户登录控件,用户登录控件(Login)是基于角色的安全技术的核心控件。该控件的作用是进行用户认证,确定新到的用户是否已经登录。该控件的界面如图1所示。 该控件对应的代码是:需要改变界面时,通过属性修改界面中的显示(例如将英文显示改成汉字显示等)。 Login控件实质上是一个“用户控件”,它不仅生成了显示界面,还定义了相应的行为。由于系统已经自动生成了数据表,而且数据表的表名、字段名以及位置都已经固定,因此只要将Login控件拖入到窗体中,不需要编写任

34、何代码,也不需设置任何其他属性就可以使用。 执行Login控件的结果要么登录成功,要么登录失败。 当登录成功时,后续的操作包括: 转向新页面。Login控件的DestinationPageUrl属性用来设置跳转的页面地址。 改变视图。利用本页面的LoginView控件改变视图,显示基于角色的不同界面。 显示登录状态。利用LoginStatus控件显示登录状态,以便随时退出登录状态。 表示对登录用户的欢迎。利用LoginName控件编写欢迎语句。 登录失败时通常需要进行的操作包括: 提示错误信息,要求重新登录。Login控件的FailureText属性用来确定登录失败时的提示文本。 创建新用户。

35、通过CreateUserWizard控件创建新用户,以完成登录前的准备工作。,用户登录控件,恢复密码。通过PasswordRecovery控件帮助用户恢复密码。 为此在Login控件中最好设置与上述控件相应的页面的链接指针,设置的方法如下: 利用属性CreateUserText和CreateUserUrl相结合指向创建的新用户界面。前者为指针的文本,后者是网页的地址(URL)。 利用属性PasswordRecoveryText和PasswordRecoveryUrl相结合指向恢复密码的网页。前者是指针文本,后者是网页的地址(URL)。 利用属性HelpPageText和HelpPageUrl相

36、结合指向帮助网页。前者是指针文本,后者是网页的地址(URL)。 上述这些属性的设置以及在控件中的显示,如图1所示。 属性“VisibleWhenLoggedIn”用来设置当用户身份验证成功后是否自动隐藏自己。如果将它设为true时,一旦登录成功,Login控件自己将被隐藏起来。,用户登录控件,在Login控件中提供了4个事件,利用这些事件可以增强控件的功能。 BeforeLogin:此事件发生在登录表验证之前。利用这一事件可以检查输入数据的语法和格式是否正确,以便及时提示错误并中断后续的操作。 AfterLogin:该事件发生在认证成功之后,这使你能够在登录成功以后附加一些程序以便做进一步处理

37、。 Authenticate:该事件发生在当你想根据事件而提供一个固定的认证模式的时候,你可以详细说明用户数据是否已经被验证成功。通常,你可以利用一个用户个人服务来执行你自己的认证机制。 LoginError:该事件发生在用户输入数据错误,认证停止的时候。利用此事件可以在错误发生,停止认证后做进一步的处理。,使用创建新用户控件,使用创建新用户控件,另外,该控件还有一个强大的功能就是可以在用户完成所有的注册项目之后,自动给用户的邮箱发送用户注册信息的邮件。比如,可以感谢用户登录你的网站等。这些邮件可以包括用户注册的信息(用户名,密码等)。 你可以通过给该控件的MailDefinition属性赋值

38、来配置邮件的发送,这个属性代表了MailDefinition类的一个对象,MailDefinition类包括了定义一封E-mail需要的所有的属性,还可以在根目录下建立一个.txt文件,把文件的路径赋给MailDefinition 属性的BodyFileName,比如,文件名为welcomeEmail.txt。该文件中还可以包含一些特殊的符号如和用来代替实际的用户名和用户密码,,使用创建新用户控件,示例: 欢迎您登录本网站 您的名字是: 您的密码是: 下面是在CreateUserWizard控件中,为用户完成注册后发送给用户的一封主题为“感谢”的电子邮件而做的设置,邮件的文件名为“welcom

39、eEmail.txt”。 BodyFileName=“welcomeEmail.txt“ From=“myS“ Subject=“感谢!“ 如果要使该控件具有发送电子邮件的功能,必须使它能够发送邮件,为此在MACHINE.CONFIG文件中将看到下面的配置: ,使用创建新用户控件,如果安装并激活了一个本地SMTP服务,那么就不需要修改上面配置,如果想用不同的邮件协议,则必须在Web.config文件中修改上面的设置。 CreateUserWizard控件在一些复杂的注册场合中也很有用,比如在授权用户登录你的网站前要验证用户注册的电子邮箱地址是否有效。如果你激活了CreateUserWizard

40、控件的AutoGeneratePassword属性,那么控件就会为用户随机地生成一个密码。利用CreateUserWizard控件的E-mail功能,将这个随机生成的密码送回给用户。要求用户必须使用这个密码才能登录网站。这样,也就验证了用户邮箱地址的有效性。 上述界面中的有些部分实际上取决于在Membership Provider中的设置。例如,Question和Answer输入框只有当Membership Provider中的requiresQuestionAndAnswer属性设置为true时(默认时即如此)才会显示出来。 当这些设置完成后打开ACCESS或者SQLServer数据库中的用

41、户表,可以看到刚刚建立的用户信息已经存储在数据表中了,在这里并没有编写一行代码。这些复杂的功能实际上都被封装到了CreateUser控件之中。,登录状态与登录姓名控件,一般的登录模块,当用户成功登录后,会显示用户当前登录的身份,比如“欢迎XXX用户登录”的提示,而同时会显示“LOGOUT(退出)”的提示。这里可以利用LoginName和LoginStatus控件的帮助来实现这一功能。 LoginName用来显示注册用户的名字,通过FormatString属性可以增加一些格式的描述。如果用户没有被认证,这个控件就不会在页面上产生任何输出。而“LoginStatus(登录状态)”控件则提供了一个方

42、便的超链接,它会根据当前验证的状态,在登录和退出操作之间进行切换,如果用户尚未经过身份验证,则显示指向登录页面的链接。如果用户已经进行了身份验证,则显示使该用户能够退出的链接。利用不同的属性,这两个显示的内容都是可以被修改的。通常可以根据登录和退出的状态在控件上加上照片等个性化的 东西。 这两个控件产生的对应代码分别如下: 在LoginStatus控件中为了能够正确退出,还可以将下面两个属性进行设置。 LogoutAction属性:设成Redirect(默认是Refresh)。 LogoutPageUrl属性:指定退出的网页,通常是用于登录的网页。,登录视图控件,在早期的版本里,区分不同角色、

43、浏览不同页面需要用代码来实现,这样做比较麻烦。现在ASP.NET 2.0提供了一个十分有用的控件就是LoginView。LoginView结合导航控件能够根据当前用户的角色自动显示不同的导航界面,实现基于角色的网站浏览功能。默认情况下该控件只包括两个模板:匿名(未登录)模板(Anonymous)与已登录模板(LoggedIn),可以对匿名用户和已登录的用户分别显示不同的导航界面。如果在应用项目中设置了多个不同的角色时,控件将自动增加多种不同的模板,用来为不同角色显示不同的导航界面。每个登录后的用户将只能按照自己所充当的角色查看自己权限以内可以访问的网页,从而可以直观地保护网页。然而这只是视图上

44、的保护,并不能代替Web.config文件的作用,一些用户还有可能直接利用URL直接进入受保护的网页。因此视图的保护还应该和Web.config相结合才能既有效又方便地保护网页。,登录视图控件,下面用一个简单的示例来说明LoginView控件的使用方法。 将LoginView控件拖入窗体,单击【编辑RoleGroups】,打开角色组编辑窗口,并将已经设置的角色增加到窗口中,情况如图1所示。 再查看LoginView控件的模板时,将看见除原来的两个模板以外又增加了几个角色的模板。情况如图2所示。 选择不同的模板,放入TreeView控件,分别按照角色的权限显示相应的网页。 匿名用户的模板(Ano

45、nymousTemplate)。 角色为Admin的模板(RoleGroup0-Admin)。 角色为Sales的模板(RoleGroup2-Sales)。,登录视图控件,图1 角色组编辑窗口,图2 角色模板编辑窗口,PasswordRecovery 控件和ChangePassword控件,有开发经验的人都知道,以前如果用户忘记了密码而要重新获得密码是比较麻烦的事情,为了实现这一功能,需要编写代码包括认证用户,查询数据库,修改数据库等。ASP.NET 2.0提供了一个很有吸引力的控件,即PasswordRecovery 控件。该控件能够通过电子邮件来帮助恢复忘记的密码。 要使用该控件,需要具有

46、自动发送邮件的功能,必须像CreateUserWizard控件一样,正确配置Web.config文件。 只要用户在注册时正确地填写了邮箱地址和配置正确,并在该控件里提交了请求,它就会自动把密码发送到你的邮箱中。就像CreateUserWizard控件一样,也可以用 MailDefinition 属性来定义发送给用户的电子邮件的属性,PasswordRecovery 控件和ChangePassword控件,此控件提供了三种模板。 UserName:用于初始化控件,用户需要在这里填上登录名。 Question:在用户寻找遗忘的密码时必须回答的问题。 Answer:用在当用户输入的密码正确,或者已经

47、用E-mail发给用户的时候。 在PasswordRecovery控件中还有一些重要的事件。 BeforeUserLookup:当用户查找用户资料的时候被激发。可以设定个人测试条件取消这个过程。 UserLookupError:当用户名不存在时激发。 BeforeAnswerLookup:在用户输入了答案并且被验证后激发。 AnswerLookupError:当输入答案错误时被激发。 BeforeSendMail:在邮件发送之前被激发。 Changepassword控件的用法和PasswordRecovery的相似,它也有MailDefinition 属性,通过设置该属性可以设置发送给用户的邮

48、件格式。 修改密码(Changepassword)控件的界面,如图1所示。 恢复密码(PasswordRecovery)控件的界面,如图2所示。,使用成员资格和角色管理器API,创建用户、登录、注销、修改密码等功能不需要编写一行代码就可以实现,实际上,ASP.NET 2.0是使用Membership、MembershipUser和MembershipProvider类来完成这些功能的。,成员资格,“成员资格”功能围绕两个中心类来生成:Membership和MembershipUser。Membership类提供用于创建用户(由MembershipUser类表示)的方法,以及用于管理用户的常见管

49、理方法。使用 Membership类创建的用户表示一个ASP.NET应用程序经过身份验证的标识。 使用Membership类执行的常见任务包括: 创建新的MembershipUser。在用户试图登录时验证用户名密码组合。然后可以使用“Forms Authentication”(窗体身份验证)发出一个Cookie,指示用户已经登录网站。 检索MembershipUser实例。 更新MembershipUser实例 。 基于各种搜索条件搜索用户 。 获取当前在线的经过身份验证的用户的数量 。 不再需要某些用户时从系统中删除这些用户。,成员资格,获取一个MembershipUser实例之后,直接使用MembershipUser类执行的常见任务包括: 访问应用程序中MembershipUser类的属性。 检索用户密码(仅在成员资格功能被配置成允许密码检索的条件下)。 更改用户密码或重置用户密码。 更改用户的密码提示问题和密码答案(如果成员资格功能已被配置成在检索或更新密码前提示用户输入密码提示问题和答案)。 解除对由于密码错误或密码答案错误而被锁定的用户的锁定。,角色管理器,角色管理器的中央管理类是Roles类。Ro

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1