全新的membership框架Asp.net Identity(1)——.Net membership的历史

在Asp.net上,微软的membershop框架经历了Asp.net membership到Asp.net simple membership,再到现在的Asp.net Identity. 每一次改变,都使得验证框架更加的适应变化和可定制。这篇文章是Asp.net Identity系列的开篇,主要就membership的历史以及Asp.net Identity中的中的一些新的特性和设计思想分享一下自己的理解。后续将会对Asp.net Identity的实际使用以及实现方式等进行进一步展开。

一, Asp.net membership

Asp.net membership是在2005年的Asp.net 2.0引入的。微软首次为Web Form提供了一套membership解决方案,包含了表的结构,基础的操作User, Role等的类,甚至还有一套控件(用户登录login, 用户注册createuserwizard等这些控件)和一套现成的管理页面用来配置。(如下图)

justrun_aspnet

微软一直的优势,就是非常的傻瓜化,什么都是现成的,直接拿来就用,但是也带来了一个负面的影响,就是适应性差,缺乏弹性,无法应对实际应用中的差别需求, 这主要体现在:

  • 1. 无法改变表结构,Asp.net membership为你定义好了User,Role等表,但是实际的开发中,你的User表可能需要更多的字段,这个时候往往只能在创建一个存储User附属信息的表。
  • 2. 提供的控件看似方便,但是其实鸡肋。由于自带的login控件和membership类,只提供了简单的用户信息录入,不能满足我们项目的需要。例如:我们要用户注册的时候同时输入QQ号码,电话号码,家庭地址。那么使用默认的方式是没有办法解决的。
  • 3. 默认只能是存储在Full Sql Server中,对于SQL Server CE, SQL Azure都不支持。通过自定义的Provider可以将membership中的数据存储到其它的关系数据库中,但是对于NoSQL数据库,实现起来非常麻烦。

二, Asp.net simple membership

Asp.net simple membership是再一次的改进,目标是让你更容易地将membership集成到现有的系统中。更容易体现在,它的外部依赖少,对于原有系统的侵入少。

可以定义自己的User表,然后通过下面代码, 生成membership工作所依赖的表,你就能将你系统中的User表和simple membership无缝对接起来。SimpleMembership没有强制的表结构, 所以你可以用任何你觉得舒服的定义自己的User表来存储User信息。这里实际中就是有2个User表,一个是你定义的User表;另一个是simple membership中的User表,只包含和membership相关的信息。

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", true);

下图是simple membership在数据库中生成的表

image

但是simple membership本质上也只是上一代membership的改良而已。从下面的图中能够看出来,simple membership是membership的另外一种实现,提供了一种方便使用的MembershipProvider。

image

由于这种原因, simple membership仍然摆脱不了一些弊病:

  • 仍然无法应用到NoSql数据库中.
  • 无法集成到OWIN中
  • 无法方便的扩展

三,Asp.net Identity简单介绍

Identity是微软设计的全新的独立的membership系统,是为所有的Asp.net应用提供服务的

Identity有下面优点:

  • Asp.net全境适用:  Asp.net, MVC, web api, SignalR
  • User信息自定义
  • 存储易于扩展: 默认使用EF Code First存储到数据库中,但是也非常容易扩展到SharePoint, Windows Azure Storage Table Service, NoSQL databases
  • 可单元测试
  • 角色: 有Role Provider,非常容易创建和管理角色
  • Claims权限信息: 相比简单的Role权限控制,Claims提供了更加丰富的内容
  • 社交化登录: 比如Facebook等
  • 支持Windows Azure Active Directory
  • 支持OWIN
  • Nuget发布和安装

Identity的原理以及基本设计思想

要完整的理解Identity,需要先了解OWINOWIN可以参考文章 下一代Asp.net开发规范OWIN(1)

基于OWIN的设计,使得Identity把membership抽象成了两块大的部分。一块是membership所依赖的数据的存储,一块是Identity的authentication部分。

下一篇,将通过一个实际的例子,来分析Identity的具体使用以及背后的设计。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/540452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二.编写第一个c#程序(注释,命名空间,类,Main方法,标识符,关键字,输入,输出语句,)...

复习编写一个控制台应用程序,目标是在控制台输出“Hello World” 1.第一步,打开Visual Studio 2012以上版本(我用的是VS 2015),打开完成后出现以下界面 2.第二步,这时候就要新建一个解决方案了,创建解决方案可以直接点…

node oauth2验证_如何设置和使用护照OAuth Facebook身份验证(第1部分)| Node.js

node oauth2验证In my last articles, we looked at the implementation of the passport-local authentication strategy. We also looked at the various requirements to get started with the login form. 在上一篇文章中,我们介绍了护照本地身份验证策略的实现…

RYU控制器安装`

2019独角兽企业重金招聘Python工程师标准>>> 同样是参考了http://linton.tw/2014/02/11/note-how-to-set-up-ryu-controller-with-gui-component/的内容。 1. 由于Ubuntu中自带有Python,因此直接开始安装pip apt-get install python-pip apt-get i…

数据库连接池的设计思路及java实现

2019独角兽企业重金招聘Python工程师标准>>> connectionPool.DBConnectionManager [java] view plain copy package connectionPool; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; i…

窄带物联网(NB-IoT)初步了解

哪有什么天生如此,只是我们天天坚持。既然总有人要赢的话,为什么不能是我呢?[TOC] 什么是NB-Iot? 基于蜂窝的窄带物联网(Narrow Band Internet of Things, NB-IoT)成为万物互联网络的一个重要分支。NB-IoT构建于蜂窝网…

JavaOne大事纪:IBM谈OpenJ9和Open Liberty

JavaOne大会以IBM陈述其最近对开源社区的贡献作为开场:OpenJ9、Open Liberty和MicroProfile。IBM杰出工程师John Duimovich做了“IBM和Java:助力下一代创新”的开场演讲。\\读者可以回看演讲视频。\\Duimovich说IBM之所以致力于推动Java生态系统的创新&a…

c语言格式对齐填充_C ++中类的大小 课堂上的填充和对齐| 派生类的大小

c语言格式对齐填充Prerequisite: 先决条件: sizeof() operator in C/C C / C 中的sizeof()运算符 Size of struct in C C中的struct大小 We know that a struct size is not only the summation of all the data members, rather its the minimum sum guaranteed. …

ELK系列~对fluentd参数的理解

这段时候一直在研究ELK框架,主要集成在对fluentd和nxlog的研究上,国内文章不多,主要看了一下官方的API,配合自己的理解,总结了一下,希望可以帮到刚入行的朋友们! Fluentd(日志收集与…

css 文本背景色透明_如何使用CSS将文本或图像的背景设置为透明?

css 文本背景色透明Introduction: 介绍: In web development, there are numerous ways by which we can style our websites or web pages. You can make use of lots of properties for creating attractive and responsive websites. 在Web开发中,我…

一次前端笔试总结

1.有一个长度未知的数组a,如果它的长度为0就把数字1添加到数组里面,否则按照先进先出的队列规则让第一个元素出队。 分析:这道题主要是考核了数组的队列方法和栈方法。另外,原题还有字数限制的,只有在字数小于30并且结…

SSL

今天遇到一位网友要求老蒋将他当前已经在使用的WDCP面板环境,给某个站点添加SSL证书,实现HTTPS网址访问。在过去的几篇文章中,老蒋也有分享过不少在Linux VPS中对应的WEB环境安装SSL证书的经历,其实总体来看都大同小异&#xff0c…

应用宝认领应用

2019独角兽企业重金招聘Python工程师标准>>> 【Android】命令行jarsigner签字和解决找不到证书链错误 1、签名失败 $jarsigner -verbose -keystore /Volumes/Study/resourcesLib/Qunero-achivements/AndroidApp/QuLordy-signed-key -signedjar ./signed_XiaomiVerif…

Squid服务日志分析

Squid服务日志分析 Apache 和 Squid 是两种著名的代理缓存软件,但Squid 较 Apache 而言是专门的代理缓存服务器软件,其代理缓存的功能强大,支持 HTTP/1.1 协议,其缓存对象也较多;并且 Squid 的缓存管理模块和访问控制模…

云时代 揭开性能监测战略的隐秘优势

云时代的性能监测战略 能够对各种变化做出快速响应而不偏离重心和企业发展动力,正逐渐成为各行各业、各种规模企业的奋斗目标。业务敏捷性通常是运营良好,可实现盈利的企业标志。实现这一目标意味着公司已经成功地利用业务关键型技术来提高生产率&#x…

聊聊全站HTTPS带来的技术挑战

日前写的文章里了讨论了数据传输的安全性的问题,最后一部分提到了通过HTTPS解决数据传输安全性的方案。那么一个新问题又来了,实施全站HTTPS的过程中,我们可能会遇到哪些技术问题?所以我今天和大家一起来算一下这个账,将技术成本…

4.3/4.4 磁盘分区

2019独角兽企业重金招聘Python工程师标准>>> 添加虚拟磁盘 第一步,选择虚拟机中的“设置” 第二步,选择“添加硬盘” 第三步,选择_SCSI (推荐) # 保持默认 第四步,选择“创建新的虚拟磁盘…

RoboMaster 2017:机器人版的「王者农药」,工程师们的竞技时代

8月6日晚,第十六届全国大学生机器人大赛 RoboMaster 2017机甲大师赛在华润深圳湾体育中心“春茧”体育馆举行,关于这个比赛的盛况已经无需赘述,去年雷锋网参加上届比赛时,报道的是「像看了一场演唱会」,如果用演唱会来…

【初学者必读】:前端工程师的知识体系

下图是前端工程师图解: 前端开发的核心是HTML CSS JavaScript。本质上它们构成一个MVC框架,即HTML作为信息模型(Model),CSS控制样式(View),JavaScript负责调度数据和实现某种展现逻…

使用Prometheus监控Cloudflare的全球网络

Matt Bostock在SRECON 2017欧洲大会的演讲中,介绍了如何使用Prometheus实现对CloudFlare分布于全球的架构和网络的监控。Prometheus是一种基于度量进行监控的工具,CloudFlare是一家CDN、DNS和DDoS防御(Mitigation)服务提供商。\\基…

开始吧

2019独角兽企业重金招聘Python工程师标准>>> 写C三年有余,在技术方面也算小有所成。准备在这里分享一些C进阶、Python、Golang技术文章。 CSDN博客地址: http://blog.csdn.net/godmaycry 以后博客同步更新。 转载于:https://my.oschina.net/u…