




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Web用户与权限管理,北京理工大学计算机学院金旭亮,ASP.NET程序设计之,主要内容,Web用户与权限管理概述使用ASP.NET网站管理工具使用登录控件自定义成员资格与角色管理,2,1Web用户与权限管理概述,Web用户权限管理,Web用户权限管理,简单地说,要解决两个任务:身份验证(authentication):即确定访问网站的用户身份,解决“用户是谁”的问题;使用权限(authorization):即在用户身份确定之后,授予他一定的权限,允许他使用特定的服务,这是解决“用户能干什么”的问题。,4,ASP.NET身份验证方式,ASP.NET应用程序可以使用以下四种身份验证方式:,5,在实际的Web项目,多采用Forms身份验证。,理解ASP.NET身份验证(1),Demo:UnderStandAuthentication默认情况下,Web.Config中有以下设置:说明此ASP.NET网站使用Windows身份验证。,6,理解ASP.NET身份验证(2),修改Web.Config如下:先访问登录网页Login.aspx,成功后自动跳转到网站主页default.aspx,7,一个问题浮出水面,在前面的例子中,用户可以通过直接在浏览器中输入URL来绕开登录过程直接访问网站主页。如何强制用户必须登录后才能访问网站主页?,8,给网站添加访问规则,在Web.Config中添加以下设置:,9,上述设置禁止匿名用户访问网站,只允许SystemManager用户访问。有了上述设置,现在,用户不登录直接访问网站主页,将会被导航到登录页面。注意:在本示例程序中直接使用代码来模拟用户和角色,未使用数据库。因此,用户test被人为地转为“SystemManager”角色。,从这个实例中,可以形成以下认识:,身份验证确认“你是谁?”,而授权则规定“你能干什么!”。可以在Web.Config中设定身份验证模式和进行授权。使用FormsAuthentication.SetAuthCookie(用户名)方法表明某个用户已通过身份验证。其信息保存于Cookie中。在网页中使用Context.User.Identity获取身份验证信息(比如用户名)。,10,进一步理解授权,可以把用户分为特定的种类,每种类型的用户只能做特定的事。这种用户的分类,被称为“角色(Role)”。角色可以看成是具有特定权限的用户集合。可以使用“ASP.NET网站配置”工具轻松地给网站添加角色。,11,剖析ASP.NET成员资格与角色管理框架,了解ASP.NET用户权限管理框架,MemberShip类:提供了一系列的静态方法与属性,完成创建用户、管理密码以及身份验证的功能。MemberShipUser类:代表单个的用户权限信息,该对象公开成员资格用户的相关信息(如电子邮件地址),并为成员资格用户提供功能(如更改或重置其密码的功能)。Roles类:提供了一系列的静态方法与属性,完成角色管理的相关功能,比如将某个用户加入到特定的角色中。,13,在网站中集成用户管理功能,在网页中,可以直接使用MemberShip的一系列静态方法来管理用户,比如创建新用户、删除一个用户、更新用户信息等,例如:Membership.CreateUser(username,password);Membership.DeleteUser(username);这就使我们可以很方便地在网页中集成用户管理的功能(比如在页面上提供注册新用户账号的功能),14,提取用户信息,MemberShipUser封装了用户信息,例如,以下代码查找管理员用户sa,并且输出其登录信息:,15,MembershipUseruser=Membership.GetUser(sa);if(user!=null)Response.Write(上次登录时间:+user.LastLoginDate.ToString();,角色管理,Roles类提供了一系列的静态方法可以完成创建/删除角色,向角色中添加和删除用户,以及查询用户是否属于某个角色等功能。,16,stringusers=Roles.GetUsersInRole(Admin);Roles.AddUserToRole(username,rolename);,使用这些静态方法,可以很方便地在页面中对用户进行角色鉴别。,用户登录凭据的保存,为了保存用户的登录信息,可以使用FormsAuthentication类的SetAuthCookie保存用户的登录凭据:if(Membership.ValidateUser(username,password)/将用户登录凭据保存到Cookie中FormsAuthentication.SetAuthCookie(username,true/false);之后,在网页中就可以通过User.Identity属性来判断用户是否登录。用户注销时,使用FormsAuthentication.SignOut();,这样,用户的登录凭据就会被删除。以后要访问特定资源,就需要重新登录。,17,ASP.NET用户与权限管理信息的存储,18,ASP.NET用户与权限管理参数的设置,与ASP.NET用户与权限管理参数相关的相关配置信息主要保存在ASP.NET网站的Web.Config文件中。Windows提供另两个配置文件Web.Config和Machine.Config用于提供全局性的默认参数设置。这两个文件都位于“WindowsMicrosoft.NETFrameworkv2.0.50727CONFIG”文件夹下。参数配置冲突时:特殊者胜出!,19,2使用ASP.NET网站管理工具,ASP.NET网站管理工具,从VS2008的“网站”菜单中选择“ASP.NET配置”,即可打开ASP.NET网站管理工具。,21,使用网站管理工具,利用网站管理工具,可以给网站添加用户和角色,同时创建访问规则,22,使用ASP.NET网站配置工具配置网站,Demo:UnderstandAuthorization,使用“ASP.NET网站管理工具”创建了Admin与User两个角色。Admin文件夹只允许属于Admin角色的用户访问,User文件夹只针对注册用户开放,匿名用户不允许访问。网站首页Default.aspx和登录网页Login.aspx则开放给所有的用户访问。请仔细查看每个文件夹下的Web.Config文件。,23,ASP.NET走得更远,利用ASP.NET提供的成员资格与角色管理框架(主要就是前面介绍的几个类),配合“ASP.NET网站配工具”我们可以很方便地在自己的网站中集成这些功能。为了更大幅度地减少开发的工作量,ASP.NET还提供了一整套的登录控件,基本上“零编程”可以实现常见网站的用户管理功能,24,3使用登录控件,ASP.NET登录控件简介,可以使用ASP.NET登录控件快速创建网站用户管理模块,26,Login控件,显示一个用户名与密码文本框,用户输入之后,如果用户名与密码有效,自动导航到其NavigateUrl指定的网页,否则,显示出错信息,要求用户重输。,27,当用户登录且成功通过验证,Login控件会激发一个LoggedIn事件。如果用户的登录尝试不成功,比如密码错误,Login控件会激发一个LoginError事件。,自定义用户验证,可以直接给Login控件的Authenticate事件编码:privatevoidOnAuthenticate(objectsender,AuthenticateEventArgse)/取出Login控件的UserName和Password进行验测/如果用户名与Password有效,则e.Authenticated=true;/否则,e.Authenticated=false;如果Authenticatedtrue,表明登录有效,Login控件激发LoggedIn事件,将用户重定向到当前页或DestinationPageUrl指示的页,否则,引发LoginError事件,28,LoginView控件,可根据角色在同一个网页中显示不同的模板,默认情况下只有两个模板:用于匿名用户的模板(AnonymousTemplate)和用于登录用户的模板(LoggedInTemplate)。如果使用“ASP.NET网站管理工具”创建了角色,则可以从LoginView的智能菜单中选择“编辑RoleGroups”命令,为特定的角色创建新的模板。,29,匿名用户视图,注册用户视图,管理员视图,PasswordRecovery控件,供用户忘记密码时使用。此控件在运行时先要求输入用户名,然后显示一个问题(此问题是在创建用户时由用户指定的,比如“你最喜欢的书是哪本”)要求输入答案。答案正确之后,PasswordRecovery控件自动生成一个新密码,再通过电子邮件通知用户。因此,此控件要正常工作,需要使用“ASP.NET网站管理工具”设置一个可用的SMTP帐号与密码。,30,ChangePassword控件,不用多说,一目了然。,31,LoginStatus控件,默认情况下,当用户登录后访问放置了此控件的网页,此控件显示“注销”字样,而用户未登录访问此网页,此控件则显示“登录”字样。具体为哪种状态是由Page对象的Request属性的IsAuthenticated属性决定的。点击这一控件时,如果用户没有登录站点,LoginStatus控件提供指向应用程序配置设置中定义的登录页的链接。如果用户已登录网站,LoginStatus控件提供一个用于从网站注销的链接。从网站注销的操作会清除用户的身份验证状态,如果在使用Cookie,该操作还会清除用户的保存在客户端计算机中的Cookie。以后每次访问网站时,LoginStatus控件都会显示登录提示。,32,LoginName控件,默认情况下,LoginName控件显示Page类的User属性中包含的名称。如果System.Web.UI.Page.User.Identity.Name属性为空,则不呈现控件。,33,CreateUserWizard控件,提供一个向导,用于创建用户。,34,此控件在后台调用MemberShip.CreateUser()来创建用户,因此,如果需要将用户信息保存到某个特殊的地方,除非自定义一个成员资格提供程序,否则,不要使用这个控件创建用户。,登录控件使用实例,示例网站:UseMembershipControl,35,有关登录控件,ASP.NET提供的登录控件可与成员资格紧密集成,大大减少了开发工作量。但要注意,成员资格是独立于登录控件的。如果需要创建自定义风格的页面,可以不用这套现成的控件,而完全用传统的HTML元素和ASP.NET标准控件重新打造全新的页面。这时,后台可以直接使用现成的成员资格与角色管理组件。也可以完全抛开登录控件和成员资格组件,这时需要从零开始实现相关功能,虽然最灵活,但工作量也最大,在很多情况下并不需要这样做。,36,4自定义成员资格与角色管理,有关“成员资格与角色管理”的看法,默认情况下,成员资格与角色管理的数据放在网站App_Data文件夹下的ASPNETDB.MDF中,定义了相当多的表。,38,在实际开发中,往往网站有自己的数据库,并且希望能保存有关用户的更多的信息。好象成员资格与角色管理不能改数据库结构,因此有人认为:ASP.NET的成员资格与角色管理是鸡肋,真的是这样吗?,能不能将成员资格数据库并入本网站数据库?,问题1:,解决方案:,使用WindowsMicrosoft.NETFrameworkv2.0.50727aspnet_regsql.exe程序将成员资格数据库移到SQLServer中。,40,移植成员资格数据库,在此选择要保存成员资格信息的数据库。,41,修改网站配置文件Web.Config,添加一个连接字串设定网站使用特定的成员资格提供程序:,42,使用指定的连接字串,移除默认的提供程序,使用新的提供程序,配置角色管理提供程序,在Web.Config中添加以下设置参数:请注意一下上面的type元素,这一值是从“machine.config”文件中获取的。,43,我能不能添加扩充的用户信息?,问题2:,解决方案,所有的成员资格用户信息都有一个标识,45,这个用户标识是一个GUID字串,不可能重复。利用此标识,我们根据实际情况可以在数据库中另外创建一个自定义用户表以保存一些扩充信息,这个表与成员资格的用户表之间使用此用户标识进行关联。因此,我们既可以利用ASP.NET现有的成员资格组件以减少开发工作量,同时又能兼顾实际需要。,MembershipUseruser=Membership.GetUser(sa);if(user!=null)Response.Write(user.ProviderUserKey);,我的数据不放在SQLSe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 甲状腺癌术后护理课件
- 甲状腺功能的调节
- 18 牛和鹅教学课件
- 新解读《GB-T 36788-2018病媒生物密度监测方法 蜱类》
- 用谷歌地球做课件
- 用电安全知识培训课件通知
- Unit6 Celebrating the Big Days单元测试卷(含答案) 仁爱科普版(2024)七年级英语上册
- 用电安全知识培训大纲课件
- 生铁废钢基础知识培训课件
- 生理解剖兔子实验课件
- 芜湖宜盛置业发展有限公司招聘3名编外工作人员(必考题)模拟卷
- 走好群众路线-做好群众工作(黄相怀)课件
- 混凝土结构设计原理教学教案
- 民间文学(全套课件)
- 专升本00465心理卫生与心理辅导历年试题题库(考试必备)
- 既有重载铁路无缝线路改造及运维技术探索
- 2022年教师副高职称评答辩范文(七篇)
- 高压罗茨风机选型参数表
- 中国监察制度史
- 架桥机日常检查记录表架桥机验收及试吊安全检查表
- 屠宰加工企业组织机构职能分配表正式版
评论
0/150
提交评论