收藏 分享(赏)

13.0-c#成员资格和角色管理.ppt

上传人:天天快乐 文档编号:1359182 上传时间:2018-07-03 格式:PPT 页数:69 大小:1.10MB
下载 相关 举报
13.0-c#成员资格和角色管理.ppt_第1页
第1页 / 共69页
13.0-c#成员资格和角色管理.ppt_第2页
第2页 / 共69页
13.0-c#成员资格和角色管理.ppt_第3页
第3页 / 共69页
13.0-c#成员资格和角色管理.ppt_第4页
第4页 / 共69页
13.0-c#成员资格和角色管理.ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

1、成员资格和角色管理,1.登录系列控件2.aspnetdb数据库的移植3.成员资格管理4.Forms身份验证5.角色管理,成员资格与角色管理,Web站点常见功能包括用户登录、创建新用户、显示登录状态、显示登录用户名、更新或重置密码等。 在ASP.NET 2.0中,新增了一组登录系列控件,可以无需编写一行代码就能实现相应的用户界面和功能。同时,这些控件还内置了丰富的成员对象,提高了应用灵活性,另外这些控件还加强了安全方面的控制。例如:默认情况下,登录是以纯文本形式工作于HTTP上,若对安全性需要较高,可使用SSL加密的HTTPS。,1.登录系列控件,登录系列控件有7个控件Login控件:用来实现登

2、录;LoginName控件:用来实现登录后显示用户名;LoginView控件:可为匿名用户,登录用户或不同角色的用户设置和显示不同的视图内容;LoginStatus控件:可根据当前用户状态,呈现“登录”或“注销”按钮PasswordRecovery控件:帮助用户重新设置用户密码,并能向用户发送找回密码的电子邮件ChangePassword控件:实现更改密码CreateUserWizard控件:一个扩展的Wizard控件,实现创建新用户帐户,1.登录系列控件,ASPNETDB数据库 一个 Microsoft SQL Server Express Edition 文件 ,用于存储应用程序使用的所有

3、成员关系和角色管理信息。登录系列控件使用的后台数据库。 该数据库提供了一系列数据表和几十个存储过程实现登录中的一系列功能。它可使用WAT建立。 ASP.NET 中自带的Web网站管理工具WAT(WebsiteAdministration Tool),用来帮助开发人员对Web应用程序进行可视化配置和管理。,1.登录系列控件,WAT的配置结果都保存在应用程序根目录下的web.config中,若应用程序没有创建web.config文件,WAT将为其创建一个web.config,随着配置过程深入,WAT将把配置结果保存在该web.config中,同时,会在App_Data文件夹中和生成一个名为ASPN

4、ETDB.mdf的SQL Server Express数据库文件,请记住刷新网站目录。,1.登录系列控件,aspnetdb数据库结构:,1.登录系列控件,Login控件,在实际开发中,若确定使用Login控件实现登录验证,那么应根据是否实现自定义登录事件来区别对待。一是若应用程序无任何特殊要求,这种情况下,主要配置的是Login控件的外观、样式、链接、行为等属性。二是出于应用需求考虑,实现自定义登录验证处理事件,这种情况下,还必须实现登录验证处理事件。,1.登录系列控件,Login控件常用外观属性:,1.登录系列控件,Login控件常用行为属性:,1.登录系列控件,LoginName控件 该控

5、件用于登录验证后,显示当前用户名。它只有一个比较重要的属性: FormatString:缺省为0若要显示如右效果,则该属性该设置为: 欢迎您,0LoginView控件 该控件能基于自定义模板属性,为不同用户/角色显示不同的视图内容。另外,该控件还有个重要的RoleGroups属性,用于获取为具有特定角色的用户而设置的视图内容。,1.登录系列控件,LoginStatus控件 该控件只有两种用户验证状态,登录和注销。点击登录时,自动转向登录页面(缺省的是Login.aspx),点击注销,链接自动变成登录。该控件既可以使用文本按钮,也可以使用图片按钮,关键是要设置LoginImageUrl和LogO

6、utImageUrl。ChangePassword控件 该控件内置了两个视图:一是更改密码视图,若是允许匿名用户修改密码,可修改DisplayUserName属性;二是成功视图。显示一条成功信息。,1.登录系列控件,1.登录系列控件,CreateUserWizard控件 CreateUserWizard控件是一个经过了扩展了的Wizard控件,能够在aspnetdb数据库中快速创建新用户。默认情况下,该控件只包括两个步骤:注册新帐户和完成。可以自定义各步骤:,1.登录系列控件,密码最短长度为 7,其中必须包含以下非字母数字字符 1,方法一:密码请用!#$%&*()_+中的一个试一下,肯定就好了

7、! 方法二: 1.所有的站点都改变,找到machine.config文件 里面有两个属性,一个是 minRequiredPasswordLength,意思是最长密码,默认为7另一个是minRequiredNonalphanumericCharacters,默认为1,意思是至少有一个非字母字符,只要把它改成0就可以了。 2.假如只是对某一个站点,只要修改web.config的值,把上面的代码插入在 下面。,1.登录系列控件,PasswordRecovery控件在实际应用中,对于需要找回密码的用户,在找回密码之前,必须向应用程序提供一些基本信息:(1)提交用户名;(2)提交密码问题答案;(3)用E

8、mail发送重置密码给用户。该控件内置了3个用户视图,可以转换成模板进行设计,对于发送电子邮件,必须指定所使用的SMTP服务器及其相关配置,例如:服务器邮件地址是,可以使用WAT进行配置,在“应用程序”选项中:,1.登录系列控件,保存后,web.config中设置:,1.登录系列控件,如果想Login系列控件的使用都基于SQL Server必须进行下列操作:(1)在VS.NET的命令提示中,输入: aspnet_regsql后按向导进行操作(2)修改web.config,2.aspnetdb数据库的移植,这是因为在machine.config(ASP.NET基本的配置文件)文件中存储了一个配置

9、节“LocalSqlServer”,无论应用程序是否配置web.config文件,其基本配置都从machine.config文件配置中继承。最好不要修改machine.config,可以在继承的web.config中先移除(remove)该配置节,然后再重新加入(add)。,2.aspnetdb数据库的移植,在实际应用中,每个Web应用程序中有关成员验证、管理的内容都大同小异,没有本质性区别。将这些内容抽象并形成独立的模型供开发人员使用,是个很好的解决方案,微软为了实现这个解决方案,在ASP.NET 2.0中新增了成员资格管理功能,用于与登录控件和Forms验证结合使用,其核心是利用内置的成员

10、库表(aspnetdb数据库)、成员资格管理API(例如,Membership,MembershipUser等),成员资格提供程序(例如SqlMembershipProvider、自定义提供程序等),实现模块化和自动化的成员资格管理模式)。,3.成员资格管理,成员资格管理结构,3.成员资格管理,成员资格管理API: 两个核心类 Membership和MembershipUser。这两个类包括了多个方法和属性,利用Membership类可以实现验证、创建和管理用户等功能,而MembershipUser主要是检索特定用户信息的功能,例如,获取用户密码等信息、判断用户是否在线等。 注:成员资格管理A

11、PI并不与数据直接打交道,成员资格管理API实现的是业务逻辑,具体的数据访问是由成员资格提供程序实现;成员资格管理提供程序: SqlMembershipProvider类继承于MembershipProvider基类,用于与SQL Server数据库交互,涉及各种数据访问方法,3.成员资格管理,如果采用其他类型的数据库,必须自定义成员资格管理提供程序,并且这些自定义成员资格管理提供程序也必须继承于MembershipProvider类. 这种结构与三层架构之间有很多相似之处,例如:登录控件相当于界面(UI)层,主要负责应用程序的外观,而成员资格管理API相当于业务逻辑层,利用它可实现不同的应用

12、需求;成员资格管理提供程序相当于数据访问层,负责与数据库交互。如果要将应用迁移到其他数据库,只需创建和应用自定义成员资格提供程序。,3.成员资格管理,成员资格管理涉及到的aspnetdb数据库中的表,3.成员资格管理,配置节说明 在web.config中,成员资格管理功能的配置都包含在配置节中,下面是配置节的默认设置代码,3.成员资格管理,3.成员资格管理,3.成员资格管理,应用举例:(1)创建新用户,可以使用Membership类的静态方法,3.成员资格管理,使用该方法将界面上的数据传入,CreateUser方法会自动调用成员资格提供程序中适当的方法实现与数据库的交互。这个方法处理的结果用o

13、ut关键字返回,是一个MembershipCreateStatus枚举 下面是各枚举的值及其意义:,3.成员资格管理,3.成员资格管理,(2)登录,可以使用Membership类的静态方法,3.成员资格管理,其中界面设置了最多登录机会,其实现核心是以数据绑定方式显示了Membership类的MaxInvalidPasswordAttempts静态属性。MaxInvalidPasswordAttempts属性用于进行连续不成功登录的最多次数,默认为5.若需修改,则设置配置节的maxInvalidPasswordAttempts属性。(3)显示用户列表和删除用户,3.成员资格管理,可以使用Memb

14、ership类的静态方法,该方法返回一个MembershipUserCollection类型,这是个集合类,它实现了ICollection和IEnumerable接口,而GridView控件能够接受实现了IEnumerable接口的数据源数据,所以可以将其与GridView控件直接绑定。删除可用静态方法:,3.成员资格管理,(4)更新用户信息,可以使用Membership类的静态方法,这个方法需要一个MembershipUser对象参数,可用MembershipUser的GetUser方法获得,3.成员资格管理,示例代码: MembershipUser mu = Membership.GetU

15、ser(username); mu.Email = email; mu.Comment = comment; Membership.UpdateUser(mu);5.实现自定义成员资格提供程序 假如我们用格式如下的XML文件存储用户信息,3.成员资格管理, Tom John ,3.成员资格管理,我们要用一个类来实现自定义成员管理提供程序,这个类必须实现ProviderBase、MembershipProvider类部分方法,具体要实现的方法请在MSDN中查询“实现成员资格提供程序”,这几个类关系如下:,3.成员资格管理,如果应用程序使用了自定义的成员资格提供程序,以及自定义的数据源,则

16、必须对web.config文件的配置节进行正确配置。,3.成员资格管理,在前面的学习中, 我们已经使用了ASP.NET 2.0中的成员资格管理功能轻松实现了登录等功能,但在其中存在了一个潜在的问题:无论任何用户登录之后,都可以进入用户管理页面,进行用户管理,这在实际应用中是绝对不允许的,即这样的程序没有对用户进行访问授权,换句话说没有设置用户的访问权限。 一般采用的授权方式是:定义不同的角色,为角色设置一定的权限,再把用户映射到这些角色上。,4.角色管理,1. 使用WAT进行角色管理,例如:项目分为两个角色:开发人员和测试人员,项目中有两个文件夹,develop和test。develop仅供开

17、发人员使用,而test仅供测试人员使用。,可以使用WAT进行配置:,4.角色管理,添加两个角色:开发人员和测试人员后,可以按要求配置访问规则,在应用程序的配置文件web.config中出现一个配置节: ,4.角色管理,相应的文件夹中出现的web.config配置,如下 ,这样配置好后,develop文件夹就只能被开发人员访问,而不能被测试人员访问。,4.角色管理,2. 角色管理模型,4.角色管理,角色管理API 一个核心类Roles类,Roles类中包含了多个方法和属性,利用这些成员对象,可快速实现创建新用户,为用户分配/删除角色、获取角色信息,判断角色中是否包含用户,设置缓存角色的Cooki

18、e等。 注:角色管理API并不与数据直接打交道,角色管理API实现的是业务逻辑,具体的数据访问是由角色管理提供程序实现;成员资格管理提供程序 默认使用权SqlRoleProvider类,用于与SQL Server数据库交互,涉及各种数据访问方法,如果采用其他类型的数据库,必须自定义角色管理提供程序,并且这些自定义角色管理提供程序也必须继承于RoleProvider类.,5.角色管理,3.角色管理涉及到的aspnetdb数据库中的表如下,一个用户对应多个角色,而一个角色也对应多个用户,所以会出现用户/角色表(aspnet_UsersInRoles)。,4.角色管理,4. 配置节说明 在web.c

19、onfig中,角色管理功能的配置都包含在配置节中,下面是配置节的默认设置代码,4.角色管理,4.角色管理,4.角色管理,5. 应用举例,4.角色管理,先使用Roles类的静态方法,判断角色名是否存在;再使用Roles类的静态方法,(2)删除角色 先使用Roles类的静态方法,4.角色管理,(1)创建新角色,获得该角色下的所有用户,返回一个string数组,可利用数组的length属性判断该角色下有多少用户,若无用户可进行删除 再使用Roles类的静态方法,可利用返回的布尔值判断是否删除成功,(3)为角色添加用户或从角色中移除用户 添加可以使用Roles类的静态方法,4.角色管理,或者:,移除可

20、以使用Roles类的静态方法:,4.角色管理,或者使用,6.实现自定义角色管理提供程序 假如我们用格式如下的XML文件存储用户角色信息,4.角色管理,我们要用一个类来实现自定义角色管理提供程序,这个类必须实现ProviderBase的Initialize方法,以及RoleProvider类的ApplicationName属性和10个方法,具体要实现的方法请在MSDN 中查询“自定义角色管理提供程序”如果应用程序使用了自定义的成员资格提供程序,以及自定义的数据源,则必须对web.config文件的配置节进行正确配置,至少需要配置应用程序所使用的角色管理提供程序,是否启用角色管理功能等内容。,4.

21、角色管理,4.角色管理,一、概述 Web站点的页面访问分为两种类型:一是允许所有用户访问,即无需用户凭证(例如:用户名和密码)都可以访问页面。另一种是允许部分用户访问,用户必须提交用户凭证才能访问相关资源。对于后者,主要涉及两个重要的概念:身份验证和授权。所谓身份验证是指确定发出请求的用户的身份,即解决是谁发出的请求;一旦能通过验证,用户应该获得一个标识(类似于参加一个会议的会议证,一个可以识别用户的令牌),用户可以访问特定的资源,这个过程叫授权, 解决的是用户能访问什么资源的问题。,5.Forms 身份验证,二、ASP.NET的身份验证方式1. Windows身份验证(Windows Aut

22、hentication)适用于企业内部Intranet中使用,适合于用户数目固定,且这些用户拥有已存在的Windows用户帐户的情况。它的缺点是它不能通过代理服务器工作,因此对于大多数的Web应用程序不合适。2. Forms身份验证(Forms Authentication)它可以支持很多浏览器且在Internet上有着广泛的支持,主要是基于Cookie来实现用户身份验证,它的主要缺点是在于它需要自己编写身份验证逻辑(不管是自行编写的代码或登录系列控件中内置的代码)。,5.Forms 身份验证,3. Passport身份验证(Passport Authentication) Microsoft

23、 .NET Passport 是一种用户身份验证服务,站点用户可使用该服务创建单次登录名和密码,从而方便地访问所有启用 .NET Passport 的网站和服务。启用 .NET Passport 的站点依靠 .NET Passport 中央服务器来验证用户,而不是主持和维护它们自己的专用身份验证系统。 用户使用同样的用户名和密码就可以登录到许多Internet站点,例如:Hotmail和MSN都使用.NET Passport来验证用户。 缺点:(1)使用这个服务要付费;(2)需要每个用户都要有一个有效的.NET Passport账户,5.Forms 身份验证,三、启用Forms身份验证1. 配

24、置IIS使用匿名身份验证 IIS默认网站,右键,目录安全性,注:在VS.NET IDE中开发时,未将网站建立在IIS中时不需要配置,5.Forms 身份验证,2. 在web.config文件中设置身份验证 web.config的作用域:,5.Forms 身份验证,在配置节中配置如下:,各参数含义如下:loginUrl:未被验证的用户被重定向到的登录页面的URL name:用于身份验证目的的 Cookie 的名称,默认为.ASPXAUTH,特别是一台服务器上有多个网站启用Forms身份验证,必须设定。timeout:以整数分钟为单位的时间量,超过此时间量, Cookie 将过期。默认值是 30。

25、,5.Forms 身份验证,protection:用于保护 Cookie 数据的方法。有效值如下所示:a. All(默认值),同时使用数据验证和加密来保护Cookie。配置的数据验证算法基于元素。如果三重 DES 可用并且密钥足够长(48 位),则使用三重 DES 进行加密。b. None,用于仅将 Cookie 用于个性化并且安全要求不高的站点。加密和验证都可以被禁用。尽管以此方式使用Cookie 需谨慎,但对于使用 .NET 框架实现个性化的任何方法,此设置提供了最佳性能。 c. Encryption,使用 TripleDES 或 DES 加密 Cookie,但不对 Cookie 进行数据

26、验证。这类 Cookie 容易受到精心选择的纯文本的攻击。d. Validation,不加密 Cookie 的内容,但验证 Cookie 数据在传输过程中是否未被更改。若要创建 Cookie,验证密钥在缓冲区中与 Cookie 数据连接,并且计算出 MAC 并将其追加到输出的 Cookie,5.Forms 身份验证,3.设置授权 在web.config中,可以在节的配置节中为ASP.NET应用程序设置身份验证参数。可以使用通配符来控制用户的访问: * :表示任何人 ? :表示未经身份验证的用户 :允许任何人访问 :拒绝任何人访问 :允许匿名用户访问 :拒绝未授权的用户访问 注意:顺序是先写al

27、low,再写deny,不然就会出现问题。,5.Forms 身份验证,5.Forms 身份验证,例如:项目中的所有文件都不允许匿名用户访问,注:授权设置可应用到整个Web应用程序中,除非它们被包括在节或网站子目录中web.config文件中。 用户可在节中增加多个和节来允许或拒绝对用户和角色的访问。用户或角色的意义是由ASP.NET Web应用程序配置使用的IIS身份验证类型来决定的。对于集成Windows身份验证,用户是计算机或域用户,角色是计算机或域组。 假如要保护单个页面或文件夹,例如注册页面允许所有人访问:,如果是对文件夹,则改成文件夹名,5.Forms 身份验证,四、 FormsAut

28、hentication对象 在身份验证中,所有的客户端请求都被重定向到登录页面中,该页面是在标记的loginUrl属性中所指定的登录页面,可以创建登录页面和使用FormsAuthentication对象的方法来核实和检查一个用户的凭据。FormsAuthentication对象存在于System.Web.Security名称空间中 以下是FormsAuthentication对象需要掌握的方法:,5.Forms 身份验证,1.RedirectFromLoginPage方法 作用:将已验证身份的用户重定向回最初请求的 URL,userName:为Forms身份验证目的指定的用户名 createP

29、ersistentCookie:若为true,则在用户的计算机上创建一个持久的身份验证Cookie(在客户端系统中写入一个Cookie);若为false,则创建一个临时的(非持久的)身份验证Cookie,这个Cookie存放在客户端的内存中,在会话结束时将自动移除。,5.Forms 身份验证,2. SetAuthCookie方法 作用:为给定的用户创建一个验证Cookie,并把它连接到传出响应的Cookie集合,不执行重定向,例如:用户直接访问登录页面(不是重定向到登录),通过验证后,应为其生成一个非持久性的标识性Cookie。 FormsAuthentication.SetAuthCookie(“huangbo”,false);,5.Forms 身份验证,3. SignOut方法 使用这个方法,移除身份验证Cookie,但由于IE将该页面已缓存起来,用户在浏览器中直接输入地址将访问到已缓存的网页(可以删除Internet临时文件),所以必须要清除缓冲区流中的所有内容输出。4. 从标识Cookie中读取用户名 string userName = HttpContext.Current.User.Identity.Name;,5.Forms 身份验证,

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

当前位置:首页 > 经济财会 > 贸易

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报