从Membership 到 .NET4.5 之 ASP1

preview
需积分: 0 0 下载量 116 浏览量 更新于2022-08-04 收藏 583KB PDF 举报
Membership 到 .NET 4.5 之 ASP.NET Identity ASP.NET Membership 是 Microsoft 在 .NET Framework 2.0 时代推出的一个身份验证和授权框架,它提供了一个基本的用户管理机制。然而,在实际应用中,我们发现 Membership 只提供了基本的注册、登录功能,但却遗漏了一个非常重要的问题,即用户信息是如何存在数据库中的。 在前两篇文章中,我们已经讨论了如何在一个网站中集成最基本的 Membership 功能,然后深入学习了 Membership 的架构设计。今天,我们将以用户信息为主线,从 SqlMembershipProvider 出发,到 ASP.NET Simple Membership 最后再到 .NET 4.5 中引入的 ASP.NET Identity,看看微软是如何一步一步地改造这套框架的。 我们来看一下 SqlMembershipProvider 是如何保存用户信息的。ASP.NET 2.0 时代,我们需要借助一个 VS 提供的一个工具来帮助我们生成所需要的表。打开 VS 开发者命令行工具,输入 aspnet_regsql,后面简单地连接一下数据库就会帮我们生成以下的几张表: 这些表的结构可以说明很多问题,用户信息的一些基本字段比如用户名、密码以及一些其他登录的信息存储在哪里,角色存储在哪里,角色和用户之间是如何关联的等等。 然而,用户信息字段如何扩展呢? ProfileProvider 来扩展用户信息我们上面讲到有一张表 aspnet_Profile 是专门用来给 ProfileProvider 为扩展用户信息的。它和 MembershipProvider, RoleProvider 一起组成了用户信息、权限管理这样一套完整的框架。 ProfileProvider 可以让我们扩展用户信息,例如,我们可以添加一个 Model 继承 ProfileBase 来为我们新的用户对象建模。在 web.config 配置 ProfileProvider,我们可以在 MVC 站点中实现对我们的用户信息的管理。 我们的 UserProfile 的所有字段都要从基类中获取,基类中以 object 类型存储着这些值。web.config 的配置大家可以看到 profile 里面的 inherits 结点我们设置了我们上一步建立的那个对象,这样我们就可以在代码将 MVC 里面的 Profile 对象转换成我们要的这些类型。 从 Profile 对象中获取当前登录用户的信息,我们可以使用 GetUserProfile 方法来获取当前登录用户的信息。 Membership 到 .NET 4.5 之 ASP.NET Identity 这一系列文章,我们主要介绍了 Membership 的架构设计,SqlMembershipProvider 是如何保存用户信息的,ProfileProvider 是如何扩展用户信息的,以及 ASP.NET Identity 是如何一步一步地改造这套框架的。