




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
--成员资格与角色管理Web编程技术潘冰主要内容1、Web应用程序平安概述2、基于成员资格和角色的网站平安3、利用控件创立平安页4、编程实现成员管理5、编程实现角色管理1、Web应用程序平安概述问题:网站的平安访问如果用户绕过登录网页直接进入其他网页,如何保证页面的授权访问?1〕传统基于角色的平安技术被保护的网页设置如Session对象保护措施,并建立用户注册表,在注册表中注明用户的姓名、密码以及分配的角色等。当用户进入登录页面时,先要求用户输入自己的姓名和密码,然后到注册表中去查询。如果在表中找到了可以匹配的记录时,说明该用户已经进行了注册,然后取出用户对应的角色(类型)字段,根据分配给角色的权限让用户转入相应的网页。2〕ASP.NET2.0基于角色的平安技术ASP.NET2.0提供了一个网站管理工具和7个组合控件以及编程方式实现基于成员资格和角色的管理。当给网站配置好平安设置后,系统在应用程序的”App_Data”专用目录下创立专用数据库〔ASPNETDB.MDF〕和假设干数据表。这些表包含用户的注册信息、角色信息以及个性效劳所需要的信息。成员资格的根本概念ASP.NET成员资格〔Membership〕提供了一种验证和存储用户凭据的内置方法。成员资格使用成员资格提供程序存储用户数据。默认是SQLServer数据库。默认成员资格提供程序为AspNetSqlProvider。结合ASP.NET成员资格、ASP.NETForms身份验证、ASP.NET登录控件,用户可以高效地创立一个完整的用户身份验证系统。角色管理的根本概念角色是用户组的名称。角色相当于操作系统的组。建立角色后,可以将每个用户分配到不同角色中。然后,再对角色分别授予不同的权限,这时角色中的每个用户都继承了已分配的权限,实现了用户和访问权限的逻辑别离。角色管理就是用来管理授权。角色管理包括两个方面:可以创立不同的角色,如administrators、users、guests等,然后把用户添加到相应的角色中。创立角色后,可以在应用程序中创立基于角色的访问规那么。基于角色的授权管理,可以大大减少系统管理的工作量。2、基于成员资格和角色的网站平安2.1组织好站点中的文件2.2利用网站管理工具进行平安配置2.3ASP.NET配置文件平安设置2.1组织好站点中的文件建立假设干子目录,将平安等级相同的网页放在同一个子目录下,在各个子目录的根目录下设置Web.config文件,利用该文件配置平安策略。Web.config文件之间的定义有继承关系,假设子目录的定义不同于父目录时,子目录下的文件按照子目录的定义执行。Web.config文件与目录的关系2.2利用网站管理工具进行平安配置〔1〕平安设置步骤2.2利用网站管理工具进行平安配置2.2利用网站管理工具进行平安配置2.2利用网站管理工具进行平安配置目录,角色,访问权限(者结合起来确定某角色(或用户)对某目录的访问权限。操作过程是:先确定角色(或用户),再确定权限,再选择目录,最后单击【添加此规那么】按钮。〔2〕对平安配置的调整用户:用来增添、编辑或删除用户,还可以给用户分配角色;角色:用来增添、编辑或删除角色;2.2利用网站管理工具进行平安配置2.2利用网站管理工具进行平安配置访问规那么:用来增加、编辑或删除访问规那么。可以变成完成这些步骤2.2利用网站管理工具进行平安配置〔3)平安配置的结果在应用程序的各个目录下分别产生了web.config配置文件,文件中载入了对该目录的访问权限。例如Admin目录的web.config文件如下:<?xmlversion="1.0"encoding="utf-8"?><configuration><system.web><roleManagerenabled=“true”/>〔启用角色管理〕<authenticationmode=“Forms”/>(身份验证类型为“通过Internet”)<authorization><allowroles=“Student"/><denyroles=“Admin”/>〔只允许Studnt和Admin访问该目录〕<denyroles=“user"/><denyusers=“*”/><denyusers=“?”/></authorization></system.web></configuration>在<authorization>…</authorization>中配置的顺序非常重要,系统总是按照从前向后逐条匹配的方法,并且执行最先的匹配者。代码中“*”代表所有用户;“?”代表匿名用户。也可以在web.config文件中直接编写代码2.2利用网站管理工具进行平安配置应用程序的根目录下出现了一个专用的App_Data目录,在该目录下出现了一个专用的SQLServer数据库(名为ASPNETDB.MDF)。数据库中包括用于用户管理的假设干专用数据表,这些数据表将自动记录登录用户、角色以及它们的相关数据。2.3ASP.NET配置文件平安设置网站的根目录和子目录下都可以有自己的web.config文件。Web.config配置文件中用于平安的配置主要包含三个主要的配置节:Authentication身份验证Authorization授权Location标识(定位)〔1〕authentication节身份验证authentication节用于配置ASP.NET身份验证方案。可以指定应用程序使用的验证模式:Windows〔默认〕/Forms/Passport/None〔不对请求进行任何附加身份验证〕。authentication节配置格式如下:<authenticationmode="[Windows|Forms|Passport|None]"><forms>...</forms><passport/></authentication><forms>用于配置基于窗体〔form〕的自定义身份验证方式。<forms>元素的主要属性name:定义在终端用户进行了身份验证后发送给他们的cookie的名称。默认情况,这个cookie的名称是.ASPXAUTH。loginUrl:如果没有找到有效的验证cookie(.ASPXAUTH或其他),就指定重定向HTTP请求的页面位置。它默认设置为login.aspx。protection:指定应用于cookie的保护级别,该cookie在终端用户通过身份验证后存储在他的机器上。其设置包括All、None、Encryption和Validation。应总是使用All。timeout:定义cookie过期后的时间(分钟)。默认值是30分钟。path:指定应用程序调用的cookie路径。cookieless:指定ASP.NET处理cookie的方式。其值可以是useDeviceProfile、useCookies、auto和useUri。默认值是useDeviceProfile。(2)authorization节授权authorization节用于配置Web应用程序的授权,以控制客户端对URL资源的访问权限。元素<allow>和<deny>它们分别授予和撤消访问权限。每个元素支持三个属性。users:标识允许或拒绝访问资源的用户。问号〔?〕表示匿名用户〔即未经身份验证的用户〕,星号〔*〕表示所有经过身份验证的用户。roles:标识允许或拒绝访问资源的角色〔组〕。verbs:定义操作中所用的HTTP提交方式。如GET、HEAD和POST。默认值为“*”,表示支持所有的HTTP提交方式。默认:<allowroles=“”/>允许所有角色<allowusers=“*”/>允许所有用户authorization节授权举例例1,以下配置代码允许所有Admins角色成员访问,拒绝所有其他用户访问:<configuration><system.web><authorization><allowroles="Admins"/><denyusers="*"/></authorization></system.web></configuration>允许admins角色成员拒绝所有用户authorization节授权举例例2:允许每个人使用GET,但只有Kim可以使用POST。<authorization> <allowverbs="GET"users="*"/> <allowverbs="POST"users="Kim"/> <denyverbs="POST"users="*"/></authorization>(3)location节location节用于指定应用到特定文件或目录的设置。例如,以下配置代码允许匿名用户访问Logon.aspx页面:<configuration><locationpath="Logon.aspx"><system.web><authorization><allowusers="?"/></authorization></system.web></location><locationpath=“admin"><system.web><authorization><allowroles=“administrator"/><denyusers=“*”/></authorization></system.web></location></configuration>允许匿名用户访问文件login.aspx只允许administrator访问admin文件夹任务: 当未登录用户访问登录页面以外的页面时,自动跳转到登录页面login.aspx。解决方案:使用Web.config的平安配置功能,配置使用forms的身份验证。使用说明:Forms身份验证经常用于个性化效劳,在某些情况下,身份验证不是关键,而标识才是关键,所以在持久性的Cookie中只需存储用户名就足够了,然后使用该Cookie来访问用户的个性化信息。例:使用Web.config配置ASP.NET的平安修改web.config文件,访问login10.aspx运行login10.aspx文件回自动转到login.aspx页面若改为<allowusers=“*”/>则定向到当前文件未经过身份验证,那么重定向到login.aspx在web.config中添加自定义变量Web.config<configuration> <appSettings> <addkey=“welcomeMessage”value=“欢送访问本网站”/> </appSettings></configuration>在页面中应用变量,如在中,lblWelMsg.Text=System.Configuration.ConfigurationManager.AppSettings["welcomeMessage"];3利用控件创立平安页ASP.NET2.0系统提供了一组用户管理控件,利用这些控件可以方便地完成用户管理和基于角色的平安策略的设计工作。这些控件包括:Login用户登录控件CreateUserWizard创立新用户控件LoginView登录视图控件LoginName登录用户名控件LoginStatus登录状态控件ChangePassword改变密码控件PasswordRecovery恢复密码控件(1)用户登录控件(Login)是基于角色的平安技术的核心控件。该控件的作用是进行用户认证,确定新到的用户是否已经登录。Login控件实质上是一个“用户控件”,它不仅生成了显示界面,还定义了相应的行为。由于系统已经自动生成了数据表,而且数据表的表名、字段名以及位置都已经固定,因此只要将Login控件拖入到窗体中,不需要编写任何代码,也不需设置任何其他属性就可以使用。(1)用户登录控件(Login)执行Login控件的结果要么登录成功,要么登录失败。当登录成功时:(1)转向新页面。Login控件的DestinationPageUrl属性用来设置跳转的页面地址。(2)改变视图。利用本页面的LoginView控件改变视图,显示基于角色的不同界面。(3)显示登录状态。利用LoginStatus控件显示登录状态,以便随时退出登录状态。(4)表示对登录用户的欢送。利用LoginName控件编写欢送语句。登录失败时:(1)提示错误信息,要求重新登录。Login控件的FailureText属性用来确定登录失败时的提示文本。(2)创立新用户。通过CreateUserWizard控件创立新用户,以完成登录前的准备工作。(3)恢复密码。通过PasswordRecovery控件帮助用户恢复密码。(1)用户登录控件(Login)在Login控件中设置与上述控件相应的页面的链接指针,方法如下:属性CreateUserText和CreateUserUrl相结合指向创立的新用户界面。属性PasswordRecoveryText和PasswordRecoveryUrl相结合指向恢复密码的网页。属性HelpPageText和HelpPageUrl相结合指向帮助网页。属性“VisibleWhenLoggedIn”用来设置当用户身份验证成功后是否自动隐藏自己。如果将它设为true时,一旦登录成功,Login控件自己将被隐藏起来。图18.9为登录控件设置属性(1)用户登录控件(Login)在Login控件中提供了4个事件,利用这些事件可以增强控件的功能。BeforeLogin:发生在登录表验证之前。利用这一事件可以检查输入数据的语法和格式是否正确,以便及时提示错误并中断后续的操作。AfterLogin:发生在认证成功之后,利用这一事件可以在登录成功以后附加一些程序以便做进一步处理。Authenticate:发生在想根据事件而提供一个固定的认证模式的时候,可以详细说明用户数据是否已经被验证成功。LoginError:发生在用户输入数据错误,认证停止的时候。利用此事件可以在错误发生,停止认证后做进一步的处理。(2)使用创立新用户控件(CreateUserWizard)用于创立新网站用户帐户的界面。无create-user事件,那么成功创立用户后执行此过程成功创立用户后执行此过程该控件可以在用户完成所有的注册工程之后,自动给用户的邮箱发送用户注册信息的邮件。下面是在CreateUserWizard控件中,为用户完成注册后发送给用户的一封主题为“感谢”的电子邮件而做的设置,邮件的文件名为“welcomeEmail.txt”。<asp:CreateUserWizardID="CreateUserWizard1"Runat="server"><MailDefinition>BodyFileName="welcomeEmail.txt"From=""Subject="感谢!"</MailDefinition></asp:CreateUserWizard>如果要使该控件具有发送电子邮件的功能,必须使它能够发送邮件,为此在MACHINE.CONFIG文件中将看到下面的配置:<smtpMailserverName="localhost"serverPort="25"/>(2)使用创立新用户控件(CreateUserWizard)(3)登录状态(LoginStatus)与登录姓名控件(LoginName)LoginName用来显示注册用户的名字,通过FormatString属性可以增加一些格式的描述。如果用户没有被认证,这个控件就不会在页面上产生任何输出。LoginStatus(登录状态)控件那么提供了一个方便的超链接,它会根据当前验证的状态,在登录和退出操作之间进行切换,如果用户尚未经过身份验证,那么显示指向登录页面的链接。如果用户已经进行了身份验证,那么显示使该用户能够退出的链接。利用不同的属性,这两个显示的内容都是可以被修改的。通常可以根据登录和退出的状态在控件上加上照片等个性化的东西。LoginStatus控件自动检测用户的身份验证状态〔Request.IsAuthenticated〕,并显示适当的登录/注销选项。当单击【登录】按钮,将用户重定向到该网站的登录页。LoginStatus控件将从web.config文件窗体身份验证节检索登录页的URL。当单击【注销】按钮,将去除用户的身份验证状态,并且执行相应的注销行为:刷新当前页/登录页/指定页。LoginName控件LoginName控件在页上显示当前经过身份验证的用户名〔〕。如果用户没有登录,那么该控件不在页上呈现,并且不占任何视觉空间。通过设置FormatString属性,可以更改由LoginName控件显示的文本。(4)登录视图控件(LoginView)作用:LoginView结合导航控件能够根据当前用户的角色自动显示不同的导航界面,实现基于角色的网站浏览功能。默认情况下该控件只包括两个模板:匿名(未登录)模板(Anonymous)与已登录模板(LoggedIn),可以对匿名用户和已登录的用户分别显示不同的导航界面。如果在应用工程中设置了多个不同的角色时,控件将自动增加多种不同的模板,用来为不同角色显示不同的导航界面。特点:登录后的用户按自己所充当的角色查看自己权限以内的网页,这只是视图上的保护,并不能代替Web.config文件的作用,一些用户还有可能直接利用URL直接进入受保护的网页。因此视图的保护还应该和Web.config相结合才能既有效又方便地保护网页。(5)PasswordRecovery控件和ChangePassword控件
PasswordRecovery控件能够通过电子邮件来帮助恢复忘记的密码。要使用该控件,需要具有自动发送邮件的功能,必须正确配置Web.config文件。只要用户在注册时正确地填写了邮箱地址和配置正确,并在该控件里提交了请求,它就会自动把密码发送到你的邮箱中。该控件提供了三种视图。UserName:用户需要在这里填上登录名。Question:用户寻找遗忘的密码时必须答复的问题。Answer:当用户输入的密码正确,或者已经用E-mail发给用户的时候。PasswordRecovery控件PasswordRecovery控件PasswordRecovery控件中的重要事件。BeforeUserLookup:当用户查找用户资料的时候被激发。可以设定个人测试条件取消这个过程。UserLookupError:当用户名不存在时激发。BeforeAnswerLookup:在用户输入了答案并且被验证后激发。AnswerLookupError:当输入答案错误时被激发。BeforeSendMail:在邮件发送之前被激发。ChangePassword控件在Web页面中的2个视图:【更改密码】视图:【成功】视图:是复合模板举例(1)使用CreateUserWizard控件创立用户注册页面(2)使用Login控件创立登录页面(3)使用LoginView控件检测用户身份(4)使用ChangePassword控件创立密码修改页面(5)使用PasswordRecovery控件创立密码恢复页面(1)使用CreateUserWizard控件
创立用户注册页面例1:开发任务:创立新用户注册页面Register.aspx。数据保存在ASPNETDB.MDF的aspnet_membership、aspnet_users表中。使用forms身份验证(2)使用Login控件创立登录页面例2:开发任务:使用Login控件创立登录页面Login.aspx。登录成功,那么转到默认页default.pasx。主要属性:CreateUserText—新建用户提示信息。CreateUserUrl-新用户注册页面文件。用户信息在哪里?在ASPNETDB.MDF的aspnet_membership、aspnet_users表中(3)使用LoginView控件检测用户身份
例3:使用LoginView控件创立用户身份检测页面LoginView.aspx。(4)使用ChangePassword控件创立
密码修改页面例4:使用ChangePassword控件创立密码修改页面ChangePassword.aspx。MailDefinition属性:可以将成功更改的密码通过电子邮件的形式通知用户。ContinueDestinationPageUrl: 单击“继续”按钮是重定向的URL。(5)使用PasswordRecovery控件创立
密码恢复页面例5:使用PasswordRecovery控件创立密码恢复页面LoginPasswdRecovery.aspx。分两步:(1)密码恢复登录界面:loginpasswdRecovery.aspx关键属性: PasswordRecoveryText-“忘记了密码” PasswordRecoveryUrl-“PasswdRecovery.aspx”(2)密码恢复界面:PasswdRecovery.aspx三个视图4编程实现成员管理登录控件实现对登录和用户的管理实际上是调用ASP.NET成员管理的API(Membershiplei和MembershipUser类〕成员资格管理数据库成员资格管理提供程序成员资格管理API登录控件数据库SqlMembershipProviderMembershipMembershipUserLogin控件LoginName控件……成员资格管理体系结构成员资格API:MemberShip类MembershipAPI方法可以对成员身份进行更高级别的控制。利用这些方法能够完成:创立新用户验证用户登录请求查找用户更新用户删除用户成员资格API:MemberShip类的常用方法
名称说明CreateUser()将新用户添加到数据存储区DeleteUser()从数据库中删除一个用户GetUser()从数据源获取成员资格用户GetUserNameByEmail()通过Email获取用户名FindUsersByName()通过用户名查找成员资格用户FindUsersByEmail()通过Email查找成员资格用户GetAllUsers()获取数据库中用户的集合GetNumberOfUsersOnline()获取当前访问应用程序的用户数GeneratePassword()生成指定长度的随机密码UpdateUser()指定用户的信息更新数据库ValidateUser()验证用户成员资格API:MembershipUserMembershipUser类用于表示成员资格数据存储区中的单个成员资格用户。该类公开有关成员资格用户的信息〔如电子邮件地址〕,并为成员资格用户提供功能〔如更改或重置其密码的功能〕。访问用户的属性更改用户密码或重置用户密码检索用户密码更改用户的密码提示和密码答案解除用户锁定成员资格API:
MembershipUser类的常用方法
名称说明UnlockUser()清除用户的锁定状态以便可以验证成员资格用户。GetPassword从成员资格数据存储区获取成员资格用户的密码。ResetPassword将用户密码重置为一个自动生成的新密码。ChangePassword(stringoldPassword,stringnewPassword)更新成员资格数据存储区中成员资格用户的密码。ChangPasswordQuestionAndAnswer更新成员资格数据存储区中成员资格用户的密码提示问题和密码提示问题答案。角色管理:Roles类Roles类的主要功能:创立角色。将用户添加到角色。确定特定用户是否在角色中。获取用户的角色。从角色中删除用户。管理包含角色信息的Cookie。角色管理:Roles类常用方法
CreateRole()将新的角色添加到数据源。DeleteRole()从数据源中删除一个角色RoleExists()判断角色数据源中是否存在指定的角色名称GetAllRoles() 获取应用程序中所有角色的列表AddUserToRole() 为一个用户分配一个角色。AddUserToRoles() 为多个用户分配一个角色。AddUsersToRole() 为多个用户分配多个角色。RemoveUserFromRole()从一个角色中删除一个指定用户。角色管理:Roles类常用方法〔续〕RemoveUserFromRoles()从多个角色中删除一个指定用户。RemoveUsersFromRole()从一个角色中删除多个指定用户。RemoveUsersFromRoles()从多个角色中删除多个指定用户。IsUserInRole() 判断指定用户是否具有指定角色。GetRolesForUser() 获取指定用户所属的角色列表。GetUsersInRoles() 获取一个用户所属角色的列表。FindUsersInRole() 获取属于指定角色的用户的列表,其中用户名包含要匹配的指定用户名。1)利用Membership类创立新用户在窗体中创立6个输入窗口以及一个按钮,其中:TextBox1用于输入新用户名;TextBox2用于输入新用户密码;TextBox3用于输入新用户的E-mail;TextBox4用于输入平安提示问题;TextBox5用于输入答复以下问题;TextBox6用于输入提示错误。举例:编程实现成员管理与角色管理voidButton1_Click(objectsender,EventArgse){if(this.IsValid){MembershipCreateStatusstatus;MembershipUseruser=Membership.CreateUser(this.TextBox1.Text,this.TextBox2.Text,this.TextBox3.Text,this.TextBox4.Text,this.TextBox5.Text,false,outstatus);switch(status){caseMembershipCreateStatus.Success:FormsAuthentication.RedirectFromLoginPage(user.UserName,false);break;caseMembershipCreateStatus.DuplicateEmail:this.TextBox6.Text="email地址已经登录";break;caseMembershipCreateStatus.DuplicateUserName:this.TextBox6.Text="用户已经登录";break;c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《2025标准租房合同协议》
- 《金属热处理设备》课件
- 音程及和弦构成在考试中的试题及答案
- 《2025雇佣合同细节解析》
- 2025新风系统购销合同范本
- 2025标准劳动合同书范本
- 《探索教学方法》课件
- 2025建筑止水钢板分包合同(单价)
- 解锁乐理考试技巧的秘诀分享试题及答案
- 2025年海运货代项目建议书
- 2022全国高考真题化学汇编:专题 烃 卤代烃
- 脑血管病介入诊疗并发症及其处理课件
- 家校共育一年级家长会ppt
- 《微电子学概论》第八章-光电子器件课件
- 化学分析送样单2
- 化工原理教案:6 吸收
- 花篮拉杆悬挑脚手架专项施工方案
- 【高考真题】2022年新高考浙江语文高考真题试卷(Word版含答案)
- 铝镁料仓等施工方案精品
- 目前最准确的通达信缠论分笔公式
- 《丑小鸭》教学设计
评论
0/150
提交评论