Asp.net Identity框架

Identity提供基于用户和角色的membership管理框架,基本上可以满足业务项目登录操作的所有功能需求。

如果要使用这套框架需要新建User和Role类型分别继承自IUser<TKey>和IRole<TKey>,以后所有的操作都是以这两个类为基础的。

1.框架的设计思路是很简单的,新建了一系列的Store接口为实体类或者说数据库Table的直接操作接口,比如说如果我们实现了IUserPasswordStore<TUser, in TKey> ,那么所有对密码的直接操作方法都是定义在这个接口里面,IUserRoleStore<TUser, in TKey>接口定义了UserRole表的操作方法,我们可以很轻易的关联用户和角色。框架定义了很多这样的Store包含了UserClaims,Email,Lockout,PhoneNumber等等所有我们在用户管理操作中可能使用到的操作逻辑,并且有一个统一的UserStore实现类实现上面定义的所有Store接口。默认实现是定义了一个IdentityDbContext注入到UserStore的构造方法里面这样可以通过IdentityDbContext的IDbSet<TUser>和IDbSet<TRole>等等属性完成对数据库的操作。在实际生成环境中会自定义一个UserStore并注入到Ioc容器中,并且在该自定义UserStore的构造函数中依赖注入所有相关的IRepository这样就可以很好的使用领域分层中仓储层的设计了,我们也可以定义一些自己的Store接口比如说IUserPermissionStore来满足权限验证。

2.为了方便对User的操作,框架定义了一个UserManager类型,依赖上面所说的UserStore完成对用户的所有操作逻辑。比如增删改查User记录,修改密码,锁定账号,创建ClaimsIdentity

3.Identity本身的设计思路真的是很简单的,但是他的一些代码实现是很具有参考价值的我们可以应用到自己的框架或者业务项目中,比如我们在生成邮件验证Token的时候都是只有几分钟的有效期,这需要我们将时间信息也添加到Token中,验证的时候会带上时间的验证,Rfc6238AuthenticationService就很好的为我们提供了这样的实现,它的GenerateCode和ValidateCode设计更加的简洁实用。

很多的时候我们需要根据一个实例和一些特殊的条件来生成一个唯一标识的字符串,必要的时候还能获取获取到里面的各个具体的数据值,这个时候使用简单的序列化就很难满足要求了,框架中为我们提供了一个很好的实现

4.另外通读源码后了解到它的一些具体实现细节和扩展功能,可以使得我们更加放心大胆的使用来提高项目的逼格和效率了。

比如说我们根据登录成功后获取到的User记录来创建ClaimsIdentity使用的是UserManager下的IClaimsIdentityFactory<TUser, TKey>属性,我们可以自定义一个这样的Identity工厂类来完全自定义生成的ClaimsIdentity,同时默认的工厂实现会给生成的ClaimsIdentity添加UserId,UserName,Roles以及User相关的Claim。我们可以根据这个实现来获取自己所需要的数据,甚至重构自己的实现(不再使用缓存来保存Profile信息,使用IUserClaimStore保存到Claim表中,这样会自动带入到ClaimsIdentity中)

又或者Identity框架为我们实现了一个IdentityFactoryMiddleware可以很方便的在每次Request的生命周期内创建和Dispose一个对象,避免频繁的创建实例所带来的性能消耗

另外IdentityFactoryMiddleware还给我们提供了一个DataProtectionProvider参数方便我们在创建实例的过程中加密解密数据

(纯粹是为了下个月找工作而准备的一系列博文,每一篇都尽量精简,并非给初学者看的?)

时间: 2024-11-05 16:01:12

Asp.net Identity框架的相关文章

Owin+ASP.NET Identity浅析系列(三)框架结构分析

在今天,读书有时是件"麻烦"事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<Owin+ASP.NET Identity浅析系列>来祭奠那逝去的-- 前两篇博客仅仅说了下功能如何实现,这篇博客来分析IdentityModels.IdentityConfig.Startup.Auth类文件在Owin+ASP.NET Identity框架中起到的作用 IdentityModels类文件存放的是用户.角色.数据库上下文等实体类 IdentityConfig类文件存放的是

全新的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的实际使用以及实现方式等进行进一步展开. 一

全新的membership框架Asp.net Identity

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

全新的membership框架Asp.net Identity(2)——绕不过的Claims

本来想直接就开始介绍Identity的部分,奈何自己挖坑太深,高举高打的方法不行.只能自己默默下载了Katana的源代码研究了好一段时间.发现要想能够理解好用好Identity, Claims是一个绕不过的内容.今天就和大家一起分享一下什么是Claims以及为什么Identity要基于Claims. 阅读目录: 一. 什么是Claims以及基于Claims的identity验证 二. 使用基于Claims的Identity验证的优势 三. Claims是如何应用在Asp.net中? 四,一些更深

MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN

在Membership系列的最后一篇引入了ASP.NET Identity,看到大家对它还是挺感兴趣的,于是来一篇详解登录原理的文章.本文会涉及到Claims-based(基于声明)的认证,我们会详细介绍什么是Claims-based认证,它与传统认证方式的区别,以及它的特点.同时我们还会介绍OWIN (Open Web Interface for .NET) 它主要定义了Web Server 和Web Application之间的一些行为,然后实现这两个组件的解耦(当然远不止这么点东西,我相信

Asp.Net Identity学习笔记+MVC5默认项目解析_基础用法

前言ASP.NET Identity特性Identity包基本IdentityUserUserManager准备工作ApplicationDbContextApplicationUserManager注册案例登入案例用户信息验证用户名密码验证器自定义验证器 前言 本文简单介绍Identity的使用,使用的案例是基于默认的Mvc5项目(只勾选MVC,不勾选WebApi).读者可以拿着项目源码对照地看. ASP.NET Identity特性 One ASP.NET Identity 系统 更容易加入

Owin+ASP.NET Identity浅析系列(一)用户登录注册

在今天,读书有时是件"麻烦"事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<Owin+ASP.NET Identity浅析系列>来祭奠那逝去的-- 使用VS2015创建MVC项目运行之后,发现微软很贴心的生成了一套用户授权验证系统,界面也很漂亮,但是扒拉代码一看,囧--新的membership框架,真是太给力了,连数据库表都给你生成了(EF的功劳),问题是,你这一堆一堆的代码,虽然看着很吊(也 确实很吊),但是看着人头大呢,只好研究研究,研究过程记录一下,希望可

【ASP.NET Identity系列教程(二)】运用ASP.NET Identity

注:本文是[ASP.NET Identity系列教程]的第二篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序的用户管理,以及实现应用程序的认证与授权等相关技术,译者希望本系列教程能成为掌握ASP.NET Identity技术的一份完整而有价值的资料.读者若是能够按照文章的描述,一边阅读.一边实践.一边理解,定能有意想不到的巨大收获!希望本系列博文能够得到广大园友的高度推荐. 14 Applying ASP

ASP.NET Identity V2

Microsoft.AspNet.Identity是微软在MVC 5.0中新引入的一种membership框架,和之前ASP.NET传统的membership以及WebPage所带来的SimpleMembership(在MVC 4中使用)都有所不同. Microsoft.AspNet.Identity是符合微软开放Owin标准里面Security标准的一种实现.且在MVC 5中默认使用EntityFramework作为Microsoft.AspNet.Identity的数据存储实现. ASP.N