深入理解Aspnet Core之Identity(4)

主题

之前简单介绍了Asp.net core 的初步的使用,本篇我打算给大家介绍一下Identity的架构,让大家对Identity有一个总体的理解和认识。

简介

Identity的基本的架构图如下:
avatar

  • Asp.net core Identity 是由一系列名为managers 和 stores 类组成的。manager层是主要identity架构的最高层,开发者主要在应用开发中用来对Identity User 进行管理,比如CRUD等操作。Stores 层相对于manager层在架构图中属于较低层次的类,主要用于持久化 用户(user)、角色(role)等信息,同时store类遵循了 仓储模式.manager层和store层 是完全解耦的。意味着你可以自己重写store的持久化机制并且还不用修改上层的代码。
  • 假如你打算创建自己的 存储提供器(storage provider),那么你需要创建上面架构图中的绿色和灰色层的部分,你不需要重写蓝色层的部分。当你为你提供的user创建一个UserManager 或者 RoleManager示例的时,需要提供一个 store类作为参数,这样就为你加入自己定义的代码提供了机会。

Asp.net core Identity 存储数据(stores data)类型

User

代表了网站的注册用户,内置的Identity User 能被扩展根据自身的需要。不需要自己直接去实现。
示例代码如下:

using Microsoft.AspNetCore.Identity;
namespace DemoUser.Models
{
    public class AppUser:IdentityUser
    {

    }
}

User Claims

User Claims 是关于用户的声明的集合,它比起传统的通过角色的机制更加强大,可以描述更多的用户信息。

User Logins

是关于外部认证用户提供者(external authentication provider)(比如:谷歌、新浪等)的信息

Roles

代表了网站的授权组,包含角色ID ROleID、角色名 RoleName


数据访问层

数据访问层用于保存网站的用户账户数据到数据源。我们可以自定义开发这一层,数据访问层包含了多个存储类型比如User Storage、Role Storage。你可以根据自己应用网站的设计需要来实现这些存储类,假如你的网站不需要角色类型,那么就不需要实现Role Storage。


后记

这篇简单介绍了一下Identity的架构设计。后续我打算自定义实现架构图中的绿色和灰色部分,到那时候我们在深入讨论一下如何实现。下一篇我将会分享关于 用户验证,包括当用户创建时候怎么验证用户名和email地址。

文章目录
  1. 1. 主题
  2. 2. 简介
  3. 3. Asp.net core Identity 存储数据(stores data)类型
  • User
  • User Claims
  • User Logins
  • Roles
    1. 1. 数据访问层
    2. 2. 后记
  • |