c成员资格和角色管理_第1页
c成员资格和角色管理_第2页
c成员资格和角色管理_第3页
c成员资格和角色管理_第4页
c成员资格和角色管理_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

成员资格和角色管理1.登录系列控件2.aspnetdb数据库的移植3.成员资格管理4.Forms身份验证5.角色管理成员资格与角色管理

Web站点常见功能包括用户登录、创建新用户、显示登录状态、显示登录用户名、更新或重置密码等。在ASP.NET2.0中,新增了一组登录系列控件,可以无需编写一行代码就能实现相应的用户界面和功能。同时,这些控件还内置了丰富的成员对象,提高了应用灵活性,另外这些控件还加强了安全方面的控制。例如:默认情况下,登录是以纯文本形式工作于HTTP上,若对安全性需要较高,可使用SSL加密的HTTPS。1.登录系列控件登录系列控件有7个控件Login控件:用来实现登录;LoginName控件:用来实现登录后显示用户名;LoginView控件:可为匿名用户,登录用户或不同角色的用户设置和显示不同的视图内容;LoginStatus控件:可根据当前用户状态,呈现“登录”或“注销”按钮PasswordRecovery控件:帮助用户重新设置用户密码,并能向用户发送找回密码的电子邮件ChangePassword控件:实现更改密码CreateUserWizard控件:一个扩展的Wizard控件,实现创建新用户帐户1.登录系列控件ASPNETDB数据库一个MicrosoftSQLServerExpressEdition文件,用于存储应用程序使用的所有成员关系和角色管理信息。登录系列控件使用的后台数据库。该数据库提供了一系列数据表和几十个存储过程实现登录中的一系列功能。它可使用WAT建立。ASP.NET中自带的Web网站管理工具WAT(WebsiteAdministrationTool),用来帮助开发人员对Web应用程序进行可视化配置和管理。1.登录系列控件WAT的配置结果都保存在应用程序根目录下的web.config中,若应用程序没有创建web.config文件,WAT将为其创建一个web.config,随着配置过程深入,WAT将把配置结果保存在该web.config中,同时,会在App_Data文件夹中和生成一个名为ASPNETDB.mdf的SQLServerExpress数据库文件,请记住刷新网站目录。1.登录系列控件aspnetdb数据库结构:1.登录系列控件Login控件在实际开发中,若确定使用Login控件实现登录验证,那么应根据是否实现自定义登录事件来区别对待。一是若应用程序无任何特殊要求,这种情况下,主要配置的是Login控件的外观、样式、链接、行为等属性。二是出于应用需求考虑,实现自定义登录验证处理事件,这种情况下,还必须实现登录验证处理事件。1.登录系列控件Login控件常用外观属性:名称数据类型描述FailureTextstring登录失败时的提示说明InstructionTextstring登录说明文字LoginButtonImageUrlstring登录按钮中显示的图像URLLoginButtonTextstring登录按钮中文字LgoinButtonTypeButtonType枚举登录按钮类型,三个枚举:Button,Image、LinkRememberMeTextstring默认值“下次记住我”UserNamestring输入的用户名Passwordstring输入的密码1.登录系列控件名称数据类型描述DestinationPageUrlstring验证通过后定向的页面UrlDisplayRememberMebool是否显示CheckBox控件VisibleWhenLoggedInbool用户验证后是否还显示Login控件Login控件常用行为属性:1.登录系列控件LoginName控件该控件用于登录验证后,显示当前用户名。它只有一个比较重要的属性:

FormatString:缺省为{0}若要显示如右效果,则该属性该设置为:欢迎您,{0}LoginView控件

该控件能基于自定义模板属性,为不同用户/角色显示不同的视图内容。另外,该控件还有个重要的RoleGroups属性,用于获取为具有特定角色的用户而设置的视图内容。

1.登录系列控件LoginStatus控件

该控件只有两种用户验证状态,登录和注销。点击登录时,自动转向登录页面(缺省的是Login.aspx),点击注销,链接自动变成登录。该控件既可以使用文本按钮,也可以使用图片按钮,关键是要设置LoginImageUrl和LogOutImageUrl。ChangePassword控件该控件内置了两个视图:一是更改密码视图,若是允许匿名用户修改密码,可修改DisplayUserName属性;二是成功视图。显示一条成功信息。1.登录系列控件1.登录系列控件CreateUserWizard控件CreateUserWizard控件是一个经过了扩展了的Wizard控件,能够在aspnetdb数据库中快速创建新用户。默认情况下,该控件只包括两个步骤:注册新帐户和完成。可以自定义各步骤:1.登录系列控件密码最短长度为7,其中必须包含以下非字母数字字符1方法一:密码请用~!@#$%^&*()_+中的一个试一下,肯定就好了!

方法二:

1.所有的站点都改变,找到machine.config文件

<membership>

<providers>

<add

name="AspNetSqlMembershipProvider"

minRequiredPasswordLength="7"

minRequiredNonalphanumericCharacters="1"

</providers>

</membership>里面有两个属性,一个是minRequiredPasswordLength,意思是最长密码,默认为7另一个是minRequiredNonalphanumericCharacters,默认为1,意思是至少有一个非字母字符,只要把它改成0就可以了。

2.假如只是对某一个站点,只要修改web.config的值,把上面的代码插入在<system.web>下面。

1.登录系列控件PasswordRecovery控件在实际应用中,对于需要找回密码的用户,在找回密码之前,必须向应用程序提供一些基本信息:(1)提交用户名;(2)提交密码问题答案;(3)用Email发送重置密码给用户。该控件内置了3个用户视图,可以转换成模板进行设计对于发送电子邮件,必须指定所使用的SMTP服务器及其相关配置,例如:服务器邮件地址是admin@163.com,可以使用WAT进行配置,在“应用程序”选项中:1.登录系列控件保存后,web.config中设置:1.登录系列控件如果想Login系列控件的使用都基于SQLServer必须进行下列操作:(1)在VS.NET的命令提示中,输入:

aspnet_regsql后按向导进行操作(2)修改web.config2.aspnetdb数据库的移植这是因为在machine.config(ASP.NET基本的配置文件)文件中存储了一个配置节“LocalSqlServer”,无论应用程序是否配置web.config文件,其基本配置都从machine.config文件配置中继承。最好不要修改machine.config,可以在继承的web.config中先移除(remove)该配置节,然后再重新加入(add)。2.aspnetdb数据库的移植在实际应用中,每个Web应用程序中有关成员验证、管理的内容都大同小异,没有本质性区别。将这些内容抽象并形成独立的模型供开发人员使用,是个很好的解决方案,微软为了实现这个解决方案,在ASP.NET2.0中新增了成员资格管理功能,用于与登录控件和Forms验证结合使用,其核心是利用内置的成员库表(aspnetdb数据库)、成员资格管理API(例如,Membership,MembershipUser等),成员资格提供程序(例如SqlMembershipProvider、自定义提供程序等),实现模块化和自动化的成员资格管理模式)。3.成员资格管理成员资格管理结构3.成员资格管理成员资格管理API:两个核心类—Membership和MembershipUser。这两个类包括了多个方法和属性,利用Membership类可以实现验证、创建和管理用户等功能,而MembershipUser主要是检索特定用户信息的功能,例如,获取用户密码等信息、判断用户是否在线等。

注:成员资格管理API并不与数据直接打交道,成员资格管理API实现的是业务逻辑,具体的数据访问是由成员资格提供程序实现;成员资格管理提供程序:

SqlMembershipProvider类继承于MembershipProvider基类,用于与SQLServer数据库交互,涉及各种数据访问方法3.成员资格管理如果采用其他类型的数据库,必须自定义成员资格管理提供程序,并且这些自定义成员资格管理提供程序也必须继承于MembershipProvider类.这种结构与三层架构之间有很多相似之处,例如:登录控件相当于界面(UI)层,主要负责应用程序的外观,而成员资格管理API相当于业务逻辑层,利用它可实现不同的应用需求;成员资格管理提供程序相当于数据访问层,负责与数据库交互。如果要将应用迁移到其他数据库,只需创建和应用自定义成员资格提供程序。3.成员资格管理成员资格管理涉及到的aspnetdb数据库中的表3.成员资格管理<membership>配置节说明在web.config中,成员资格管理功能的配置都包含在<membership>配置节中,下面是<membershiop>配置节的默认设置代码3.成员资格管理

属性说明name用于定义成员资格提供程序的名称type用于设置成员资格提供程序的类型connectionStringName用于设置成员资格提供程序运行所使用的数据连接字符串applicationName用于设置使用成员数据库的应用程序名称,多个应用程序可以通过设置相同的applicationName使用同一成员数据库,并且不会出现用户名重复的情况enablePasswordRetrieval设置是否支持成员资格提供程序中的取回密码功能enablePasswordReset设置是否支持成员资格提供程序中的密码重置功能requiresQuestionAndAnswer用于设置当重置和取回密码时,是否需要输入密码问题3.成员资格管理属性说明requiresUniqueEmail用于设置存储在数据库中的电子邮件地址是否唯一passwordFormat密码存储格式maxInvalidPasswordAttempts用于尝试登录次数minRequiredPasswordLength密码长度minRequiredNonalphanumericCharacters包含的特殊字符最小数量passwordAttemptWindow对连续未能正确回答密码重置问题的次数进行跟踪的时间长度(分钟)passwordStrengthRegularExpression指定用于计算密码的正则表达式3.成员资格管理应用举例:(1)创建新用户

可以使用Membership类的静态方法3.成员资格管理使用该方法将界面上的数据传入,CreateUser方法会自动调用成员资格提供程序中适当的方法实现与数据库的交互。这个方法处理的结果用out关键字返回,是一个MembershipCreateStatus枚举下面是各枚举的值及其意义:

3.成员资格管理3.成员资格管理(2)登录

可以使用Membership类的静态方法3.成员资格管理其中界面设置了最多登录机会,其实现核心是以数据绑定方式显示了Membership类的MaxInvalidPasswordAttempts静态属性。MaxInvalidPasswordAttempts属性用于进行连续不成功登录的最多次数,默认为5.若需修改,则设置<membership>配置节的maxInvalidPasswordAttempts属性。(3)显示用户列表和删除用户3.成员资格管理可以使用Membership类的静态方法该方法返回一个MembershipUserCollection类型,这是个集合类,它实现了ICollection和IEnumerable接口,而GridView控件能够接受实现了IEnumerable接口的数据源数据,所以可以将其与GridView控件直接绑定。删除可用静态方法:3.成员资格管理(4)更新用户信息可以使用Membership类的静态方法这个方法需要一个MembershipUser对象参数,可用MembershipUser的GetUser方法获得3.成员资格管理示例代码:

MembershipUsermu=Membership.GetUser(username);mu.Email=email;mu.Comment=comment;Membership.UpdateUser(mu);5.实现自定义成员资格提供程序假如我们用格式如下的XML文件存储用户信息

3.成员资格管理<?xmlversion="1.0"encoding="utf-8"?><Users><User><UserName>Tom</UserName><Password>polaris.tom@</Password><EMail>polaris.tom@</EMail></User><User><UserName>John</UserName><Password>polaris.tom@</Password><EMail>polaris.tom@</EMail></User></Users>3.成员资格管理我们要用一个类来实现自定义成员管理提供程序,这个类必须实现ProviderBase、MembershipProvider类部分方法,具体要实现的方法请在MSDN中查询“实现成员资格提供程序”,这几个类关系如下:3.成员资格管理如果应用程序使用了自定义的成员资格提供程序,以及自定义的数据源,则必须对web.config文件的<membership>配置节进行正确配置。3.成员资格管理在前面的学习中,我们已经使用了ASP.NET2.0中的成员资格管理功能轻松实现了登录等功能,但在其中存在了一个潜在的问题:无论任何用户登录之后,都可以进入用户管理页面,进行用户管理,这在实际应用中是绝对不允许的,即这样的程序没有对用户进行访问授权,换句话说没有设置用户的访问权限。一般采用的授权方式是:定义不同的角色,为角色设置一定的权限,再把用户映射到这些角色上。4.角色管理1.使用WAT进行角色管理

例如:项目分为两个角色:开发人员和测试人员,项目中有两个文件夹,develop和test。develop仅供开发人员使用,而test仅供测试人员使用。可以使用WAT进行配置:

4.角色管理添加两个角色:开发人员和测试人员后,可以按要求配置访问规则,在应用程序的配置文件web.config中出现一个配置节:

<roleManager

enabled="true"/>4.角色管理相应的文件夹中出现的web.config配置,如下

<system.web><authorization><allowroles="开发人员"/><denyroles="测试人员"/><denyusers="?"/></authorization></system.web>这样配置好后,develop文件夹就只能被开发人员访问,而不能被测试人员访问。4.角色管理2.角色管理模型4.角色管理角色管理API一个核心类—Roles类,Roles类中包含了多个方法和属性,利用这些成员对象,可快速实现创建新用户,为用户分配/删除角色、获取角色信息,判断角色中是否包含用户,设置缓存角色的Cookie等。

注:角色管理API并不与数据直接打交道,角色管理API实现的是业务逻辑,具体的数据访问是由角色管理提供程序实现;成员资格管理提供程序默认使用权SqlRoleProvider类,用于与SQLServer数据库交互,涉及各种数据访问方法,如果采用其他类型的数据库,必须自定义角色管理提供程序,并且这些自定义角色管理提供程序也必须继承于RoleProvider类.5.角色管理3.角色管理涉及到的aspnetdb数据库中的表如下

一个用户对应多个角色,而一个角色也对应多个用户,所以会出现用户/角色表(aspnet_UsersInRoles)。4.角色管理4.<roleManager>配置节说明在web.config中,角色管理功能的配置都包含在<roleManager>配置节中,下面是<roleManager>配置节的默认设置代码4.角色管理属性说明enabled是否启用角色管理cacheRolesInCookie是否启用在Cookie中缓存角色信息的功能cookieName存储角色名称的Cookie的名称。默认值为".ASPXROLES"cookiePath角色名称Cookie的路径。默认值为"/"。cookieProtection设置CookieProtection枚举,(1)All,表示同时使用Validation和Encryption方式保护Cookie;(2)None,不采取任何保护方式;(3)Encryption,表示采用加密方式保护Cookie;(4)Validation,表示采取验证方式,以确保在Cookie发往服务器过程中信息未被修改。默认为AllcookieRequireSSL角色名称Cookie是否需要使用SSL来发送到服务器4.角色管理属性说明cookieSlidingExpiration否将定期重置角色名称Cookie的过期日期和时间cookieTimeout是否启用在Cookie中缓存角色信息的功能cookieName角色cookie失效时间createPersistentCookie是否会持久性cookiedefaultProvider角色提供程序的名称,默认值为"AspNetSqlRoleProvidermaxCachedResults缓存在角色Cookie中的角色名称的最大数目,默认为254.角色管理5.应用举例4.角色管理先使用Roles类的静态方法判断角色名是否存在;再使用Roles类的静态方法(2)删除角色先使用Roles类的静态方法4.角色管理(1)创建新角色获得该角色下的所有用户,返回一个string数组,可利用数组的length属性判断该角色下有多少用户,若无用户可进行删除再使用Roles类的静态方法可利用返回的布尔值判断是否删除成功

(3)为角色添加用户或从角色中移除用户添加可以使用Roles类的静态方法

4.角色管理或者:

移除可以使用Roles类的静态方法:

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

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

解决的是用户能访问什么资源的问题。5.Forms身份验证二、ASP.NET的身份验证方式1.Windows身份验证(WindowsAuthentication)适用于企业内部Intranet中使用,适合于用户数目固定,且这些用户拥有已存在的Windows用户帐户的情况。它的缺点是它不能通过代理服务器工作,因此对于大多数的Web应用程序不合适。2.Forms身份验证(FormsAuthentication)它可以支持很多浏览器且在Internet上有着广泛的支持,主要是基于Cookie来实现用户身份验证,它的主要缺点是在于它需要自己编写身份验证逻辑(不管是自行编写的代码或登录系列控件中内置的代码)。5.Forms身份验证3.Passport身份验证(PassportAuthentication)Microsoft.NETPassport是一种用户身份验证服务,站点用户可使用该服务创建单次登录名和密码,从而方便地访问所有启用.NETPassport的网站和服务。启用.NETPassport的站点依靠.NETPassport中央服务器来验证用户,而不是主持和维护它们自己的专用身份验证系统。

用户使用同样的用户名和密码就可以登录到许多Internet站点,例如:Hotmail和MSN都使用.NETPassport来验证用户。缺点:(1)使用这个服务要付费;(2)需要每个用户都要有一个有效的.NETPassport账户5.Forms身份验证三、启用Forms身份验证1.配置IIS使用匿名身份验证IIS—默认网站,右键,目录安全性注:在VS.NETIDE中开发时,未将网站建立在IIS中时不需要配置5.Forms身份验证2.在web.config文件中设置身份验证

web.config的作用域:

Web.configWeb.configMachine.configPrivateRoot将设置应用于整个

Web应用程序将设置应用于所有

Web应用程序Config将设置应用于该目录中的所有文件5.Forms身份验证在<system.web>配置节中配置如下:

各参数含义如下:loginUrl:未被验证的用户被重定向到的登录页面的URLname:用于身份验证目的的Cookie的名称,默认为.ASPXAUTH,特别是一台服务器上有多个网站启用Forms身份验证,必须设定。timeout:以整数分钟为单位的时间量,超过此时间量,Cookie将过期。默认值是30。5.Forms身份验证protection:用于保护Cookie数据的方法。有效值如下所示:a.All(默认值),同时使用数据验证和加密来保护Cookie。配置的数据验证算法基于元素。如果三重DES可用并且密钥足够长(48位),则使用三重DES进行加密。b.None,用于仅将Cookie用于个性化并且安全要求不高的站点。加密和验证都可以被禁用。尽管以此方式使用Cookie需谨慎,但对于使用.NET框架实现个性化的任何方法,此设置提供了最佳性能。c.Encryption,使用TripleDES或DES加密Cookie,但不对Cookie进行数据验证。这类Cookie容易受到精心选择的纯文本的攻击。d.Validation,不加密Cookie的内容,但验证Cookie数据在传输过程中是否未被更改。若要创建Cookie,验证密钥在缓冲区中与Cookie数据连接,并且计算出MAC并将其追加到输出的Cookie5.Forms身份验证3.设置授权在web.config中,可以在<system.web>节的配置节<authorization>中为ASP.NET应用程序设置身份验证参数。可以使用通配符来控制用户的访问:*:表示任何人

?:表示未经身份验证的用户

<allowusers=”*”/>:允许任何人访问

<denyusers=”*”/>:拒绝任何人访问

<allowusers=”?”/>:允许匿名用户访问

<denyusers=”?”/>:拒绝未授权的用户访问注意:顺序是先写allow,再写deny,不然就会出

温馨提示

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

评论

0/150

提交评论