广州北大青鸟

- 联系电话 - - 来校路线 - 广州市天河区五山路金华园区3楼307
您现在的位置: 广州北大青鸟华工金华园校区 >> .net培训 >> .net文章 >> 正文
概述ASP.NET Membership 作者:佚名    .net培训来源:本站原创    点击数:    更新时间:2017-1-6

  MemberShip简介:

  Membership是Asp.Net框架,用于管理网站的用户Membership,角色Roles以及配置信息Profile。

  System.Web.Security.Membership类完成对用户类System.Web.Security.MembershiUser的添加修改删除验证等操作。

  注册Membership使用的数据库:在.Net命令行窗口中运行命令aspnet_regsql。

  注:此框架依赖于配置文件的支持。

  1 Membership基础应用

  使用**Windows/Microsoft.Net/Framework/vXXX/aspnet_regsql.exe构建Membership使用的数据库。

  1.2官方描述

  注:另查SimpleMembership

  System.Web.Security命名空间包含用户在Web服务器应用程序实现Asp.Net安全性的类。

  通过Asp.Net应用程序使用Membership类验证用户凭据并管理用户设置(密码和电子邮箱等)。使用Roles类可以根据指定给Web应用程序的角色的用户组对应用程序的授权进行管理。

  Membership类和Roles类都使用提供程序,及访问应用程序的数据存储以检索成员资格和角色信息的类。成员资格和角色信息可以使用SqlMembershipProvider类和SqlRoleProvider类存储在MSSQL数据库中;可以使用ActiveDirectoryMembershipProvider类和AuthorizationStroeRoleProvider类存储在ActiveDirectory中,还可以使用MembershipProvider类和RoleProvider类的实现存储在自定义数据源中。

  使用membership元素可以配置asp.net成员资格。访问使用成员资格的应用程序时,asp.net构建Membership类的一个实例,该实例可用于查询成员资格信息。MembershipUser类提供对成员资格信息的包装。可以为应用程序创建MembershipUser类的自定义实现。

  使用roleManager元素可以配置asp.net角色。asp.net创建Roles类的一个实例,该实例包含有关当前用户的角色信息。

  1.3成员资格

  成员资格使用的数据库表有aspnet_users,aspnet_membership。在membership元素(asp.net设置架构)中进行设置时,相关设置会在aspnet_application表中建立相关信息,此表用于支持多个应用程序使用,即一个数据库中的成员资格可供多个应用程序共享,aspnet_application就是用于跟踪或标记成员资格信息的创立程序的名称等信息。

  成员资格使用MembershpUser封装成员资格用户信息,并提供部分修改更新成员资格用户信息的方法。成员资格提供程序需继承抽象类MembershipProvider,针对MSSQL数据实现的成员资格提供程序是SqlMembershipProvider类。成员资格提供程序可通过数据获取在配置文件中对membership进行配置时的设置如是提供程序的名称(Name),是否可以重置密码(EnablePasswordReset)等,并提供操作成员资格用户信息的方法,如验证用户(ValidateUser),创建用户(CreateUser)等,这些返回用户实体的方法中返回的就是MembershipUser类的实例。Membership类是成员资格的主要操作类,此类通过对提供程序的调用来使用户通过它来间接实现对成员资格用户信息的管理和维护。

  如果成员资格与Forms认证同时使用,则FormsAuthenticationTicket作为票据,并使用FormsIdentity封装此票据,有FormsIdentity构建GenericalPrincipal凭证,凭证赋予HttpContext.User属性。使用FormsAuthentication.Encrypt可将FormsAuthenticationTicket加密为字符串此字符串可保存到cookie中,FormsAuthentication.Decrypt用于解密,并返回FormsAuthenticationTicket实例,FormsAuthenticationTicket.UserData可保存自定义信息。

  1.4 角色信息

  asp.net角色管理用于控制和维护用户的角色信息,以供系统访问显示使用。角色管理使用的数据表有aspnet_roles,aspnet_usersInRoles,aspnet_application。在rolesManager元素(asp.net设置架构)中配置。

  角色管理使用Roles静态类调用从抽象类RoleProvider继承而来的SqlRoleProvider提供程序来提供针对用户角色的诸多操作。

  角色管理会使用FormsIdentity封装当前用户信息并用此构建RolesPrincipal赋予HttpContext.User属性.而不是使用GenericalPrincipal.

  1.5用户配置信息

  使用到的数据表有aspnet_Profile,该表的主键和外键是UserID,关联aspnet_Users的主键UserId。配置信息管理通过ProfileBase类提供的API进行,此类提供访问当前用户的配置信息, ProfileBase的一个实例赋予HttpContext.Profile属性。

  此类通过继承ProfileProvider抽象类的SQLProfileProvider提供类访问数据源。在asp.net会动态生成一个类ProfileCommand(此类官网没有文档,也不是类库重定义的类,是asp.net动态生成的),此类继承自ProfileBase,在页中可直接使用Profile(asp.net页中的属性,类型为ProfileCommand)访问用户的配置信息。配置管理支持匿名用户使用,但需要显示设置(参见anonymousIdentification 元素(ASP.NET 设置架构)https://msdn.microsoft.com/zh-cn/library/ewfkf772%28v=vs.100%29.aspx),匿名用户登录后可能需要将匿名用户的配置信息同步到验证用户的配置信息中,当匿名用户登录时,会触发MigrateAnonymouse事件(Global.asax中Profile_MigrateAnonymouse(object sender, ProfileMigrateEventArgs args)方法,参见https://msdn.microsoft.com/zh-cn/library/ewfkf772%28v=vs.100%29.aspx)。

  配置信息的存储简单(标量)值,集合和其他复杂类型,以及用户定义的类型(必须是可序列化的)。

  自定义配置提供程序需继承ProfileProvider,必要时可修改数据表结构。此自定义信息在配置文件的profile/properties的add子元素指定任何数据项,此处定义的多个数据项将作为ProfileProvider的GetPropertyValue和SetPropertyValue方法的System.Configuration.SetttingsPropertyValueCollection参数的内容项定义的基础,包括类型和名称,GetPropertyValue从数据源读取数据用于构建返回集合,此处提供程序不关心自定义数据项在数据源中是怎么存储的,SetPropertyValue从System.Configuration.SetttingsPropertyValueCollection参数获取提供程序掉用方传入的数据保存到数据源;GetPropertyValue和SetPropertyValue的另一个System.Configuration.SettingsContent类型的参数的索引可用于获取用户名(UserName)和验证状态(IsAuthenticated)。

ACCP课程 |BENET课程| 网站地图 Copyright 2006-2017 All Rights Reserved 广州青大教育信息咨询有限公司备案/许可证编号为粤ICP备11070650号-22北大青鸟北京总部:北京阿博泰克北大青鸟信息技术有限公司 广州北大青鸟官方网址:www.gzbdqn.com.cn学校地址:广州市天河区五山路华南理工大学科技园金华园区3楼307(华工南门)