ASP.NET Identity 简介
什么是ASP.NET Identity?
2005年,ASP.NET 2.0 引入了 ASP.NET Membership 系统,到目前为止,该系统有过数次变更(Membership --> Simple Membership -->Universal Providers),相信很多WEB开发者都经历过这些变更并为之苦恼、彷徨过,因为他们要么是太不好用,要么是和SQL Server绑定过紧,以至于使用其他数据库的开发者很难自定义支持其他的关系型数据库,都说微软的组件到3.0版本才值得试用,我想还是有一定道理的,经历过这个几个版本之后,ASP.NET本身也发生了很大的变化,其中最令人振奋得就是她终于开源了,终于不再那么封闭,这样带来的好处就是她的开发路线能更加贴近社区,更能接受用户的心声,而新的 ASP.NET Identity就是在这个大环境下诞生的,他是一个全新的Membership系统,也是在ASP.NET的将来唯一被支持的Membership系统。
ASP.NET Membership历史版本的缺点
1. ASP.NET Membership
- 数据库架构是专门针对SQL Server设计的,你无法改变(逼迫你使用SQL Server数据库)。
- 设计的一开始就针对关系型数据库而定,所以几乎无法支持对NoSQL数据库的扩展,毕竟这个东西出来的时候还没有什么NoSQL的概念。
- 登录、登出系统是基于Form Authentication的,所以无法使用OWIN(什么是OWIN? )。
2. ASP.NET Simple Membership
- 同样是很难把Membership数据保存到非关系型数据库存储中。
- 同样是无法使用OWIN。
- 难以扩展。
3. ASP.NET Universal Provider
- 相比前辈而言,这个版本专门针对已有的问题作了很大的改进,包括支持将Mmembership信息持久化到微软云端数据库,本地SQL Server Compact上,并使用EF Code First.但是任然逃脱不了Forms Authentication带来的缺点。
ASP.NET Identity的目标
用户输入一个已经注册到你的站点上的用户名和密码然后登录的这个前提或假设,现在已经不再有效了,因为网络已经变得更加社会化,用户通过诸如Facebook、Google+、QQ、微信等这样的社交网络相互沟通,开发者希望用户能够通过他们的这些社交身份接入到我们开发的网络服务,一个现代的Membersip系统就需要支持用户通过已有的这些三方认证系统接入到我们的站点。
从WEB开发者的角度看,单元测试变得越来越重要,2008年,ASP.NET引入了MVC设计模式,使得测试变得如此简单,而作为Membership系统,我们同样需要它。
基于以上考量,同时由于ASP.NET的开源,开发团队在不断接收开发社区的反馈和意见,ASP.NET Identity就这样诞生了。
一个且只需要一个统一的ASP.NET Identity系统
ASP.NET Identity支持包括ASP.NET MVC, Web Forms, Web Pages, Web API, SignalR所有框架。
能够用于你构建站点应用,手机应用,存储应用或者各种混合应用。
用户数据的任意扩展
你能完全掌控用户信息的架构,比如您能轻松将诸如生日,年龄,邮箱等自定义用户信息加入到你的系统中。
持久化控制
默认情况下,ASP.NET Identity将所有用户信息通过Entity Framework Code First实现所有的持久化机制。
因为你能够控制数据库的架构,所以像改变主键等等工作变得易如反掌。
同样你可以通过扩展将用户信息持久化到NoSQL数据库,微软云存储服务等外部服务上。
单元测试更简单
你可以轻松的编写基于ASP.NET Idnetity系统的单元测试代码。
基于角色的权限控制
基于Claims的认证
提供三方认证登录
集成OWIN
易于更新的NUGET包分发
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。