ASP.NET Core Identity 实战(1)——Identity 初次体验

  • 时间:
  • 浏览:0
  • 来源:神彩快3_彩神快3官方

而且当你们依旧看一眼源代码代码

都要看了当你们数据库的名字叫做aspnet-IdentityDemo-E3266F7D-D9FD-4038-9AF7-773A31FC36200,而他的位置在 C:\Users\{当前登录的用户名}\下面。 再操作一次,而且点 继续 选者你的数据库文件

当你点击 register 按钮事先,会跳转到 数据库迁移(将会你用过EF Core,找不到这个概念你不用说会感到陌生) 确认页面

UserName假使 UserName NormalizedUserName 还是规范化事先的UserName,也假使 转换到大写

它们的行为和上述的 Email、NormalizedEmail 一致,就不赘述了

邮件将会确认,这是个bit(bool)类型的列,前文提到Identity富含发送和验证确认邮件的功能,在创建用户的事先这个值默认是false ,确认链接由 Identity生成,事先交由 IEmailSender发送。Ok,这里一半任务就做完了,展示一小段代码能我就更清楚这个过程

应用迁移后,我都要等一会刷新页面,在这段时间里,我建议你看看迁移页面上的信息

将会看不太懂,找不到请看下图

在Vs底下的菜单里依次选者 工具->连接到数据库

另外要注意,这个列的值的更改时机,它是在程序运行中手动编写的代码更改的,而都在由数据库更改(将会是考虑到并都在所有ef支持的数据库都支持timestamp 将会 rowversion 类型)

这个页面里的内容就在ManageController中,将会你告诉我双因子认证Two-factor authentication是这个,没关系,在后续讲到它时再说

选者 web 程序运行运行(模型视图控制器)->更改身份认证->每每本人用户账户

在这事先默认会使用 sqlserver compact来存储用户数据

你将会想到,在注册事先当你们顺利的进入系统,而并找不到被阻止,即便当你们找不到确认过邮件,数据库中的数据也指明邮件找不到确认

事先当你们注册了一个 多新的用户,找不到用户存哪里了?默认存储用的是sqlserver compact,接下来当你们找到它,再看看Identity是怎么才能 才能 设计用户数据,另外每每本人粗浅的认为学习一个 多新技术最好假使 先看看它把数据存成这个样了

AspNetUserTokensAspNetUserLogins存储的是用户使用的内部人员登陆提供商的信息和Token,内部人员登陆提供商指的是像微博、QQ、微信、Google、微软这类 提供 oauth 将会 openid connect 登陆的厂商。比如 segmentfault 就都要使用微博登陆

这个代码是创建项目时生成的,是属于你的项目而都在Identity的

这个是用来记录用户尝试登陆却登陆失败的次数,当你们都要通过这个来选者在这个事先都要锁定用户,

AspNetUserClaimsAspNetRoleClaims是用户和角色的声明表,事先当你们提到 Identity 是基于声明的认证模式(Claims Based Authentication)的,Claim在其中扮演者不为什要的角色,甚至角色(Role)都被转打上去了Claim,Claim相关会在底下专门讲解,将会你不了解它,不用说着急

Ok,默认数据库的位置是哪里?数据库叫这个名字呢?现在,先关闭这个窗口,打开项目根目录下的appsettings.json配置文件

密码哈希,Identity使用的hash 速率单位单位是比较高的,暴力破解的难度十分大

这是一小段源代码,用来证明上述内容

主键 默认是 nvarchar(4200) 但事实上是存储的Guid字符串,另外值得一提的是Id的创建时机

这将会会遇到数据库文件占用的的情况表

打开Vs的创建新项目面板依次选者 .net core -> asp.net core web 程序运行运行

安全标记,一个 多随机值,在用户凭据相关的内容更改时,都要更改此项的值,事实存储的是Guid

它的更改时机有:

ASP.NET Core Identity(下文简称Identity),既然都要理解为用户管理系统,找不到她自然是十分强大的,富含用户管理的方方面面,简单的来讲包括:

注意到右上角的 register 和 login何时能 能 ?在当你们选者每每本人身份认证的事先 Identity被自动打上去到项目中,而且生成了

这是将会事先启动的程序运行找不到退出,将会你用的是自托管启动,找不到关闭它将会用的是IISExpress,也关闭它

Ctrl+F5运行项目

主键的Guid是在创建用户时在构造函数中生成的

本文已同步发表到我的segmentfault专栏 .net core web dev

ASP.NET Core Identity Hands On(1)——Identity 初次体验

点一下 Send verification email链接,不用担心,不用真的发送邮件

Ok Identity找不到好,她到底长啥样?我为什用呢,接下来当你们先来做一个 多小小的demo体验一下,一边做,一边讲解

Ok, 迁移好了事先,就会回到主页,右上角的注册登录会变成你的邮箱和取回链接,点击你的账户邮箱,先看看底下有这个

电话和电话已确认,比较容易理解

同步标记,每当用户记录被更改时都要要更改此列的值,事实上存储的是Guid,而且在创建用户模型的事先直接在属性上初始化随机值

都要注意的是Identity为当你们实现了锁定功能的基础设施,而且是是是不是在用户锁定事先禁止用户登录是属于当你们程序运行的逻辑的

_EFMigrationsHistory 是 Ef的迁移历史表不用说关注此表

接下来就要解释下最为重要的一张表AspNetUsers

也假使 说它是完整性随机的无序Guid,找不到它将会带来的隐患假使 当用户量非常大的事先,创建用户将会快一点 ,不过对于绝大多数情景来讲,这不太将会(有找不到多的用户),当然这将会存在,太久太久在后续的文章里,我会讲解怎么才能 才能 使用bigint作为主键

当你们的数据类型是 bit和datetimeoffset(7),LockoutEnabled指示这个用户都要被锁定,LockoutEnd指定锁定的到期日期,null 将会一个 多过去的时间,代表这个用户找不到被锁定

初次体验到此开始 :)

点击 register 进入注册界面,界面看起来还不错,甚至都要直接使用,而且当你们注册一个 多账户

的确,将会这将会找不到Identity的范畴内了,这属于当你们的程序运行逻辑,要不用说阻止未验证邮件的用户登录,都要当你们每每本人做,不过,很简单,只需在登陆时多写几行代码而已,这里暂时先不展开讨论

好了,先看看数据库里有这个吧

这是来自于 ASP.NET Core Identity 仓库主页的官方介绍,将会你是个萌新你将会不太理解这个是成员资格,另一个 多来解释一下,成员资格由 membership 直译而来, membership 还有会员资格、会员身份、会员全体等相关含义,当你们都要将其简单直接但不用说十分恰当的理解为用户管理系统

version 2和3 是为了兼容Identity V1 V2 和V3 当你们的对应关系如下

AspNetUsersAspNetRolesAspNetUserRoles存储用户和角色信息

事先注册的用户的切实数据如下

ASP.NET Core Identity是用于构建ASP.NET Core Web程序运行运行的成员资格系统,包括成员资格、登录和用户数据存储

Email假使 Email,NormalizedEmail是 规范化后的Email

这个是规范化呢?

在当你们事先创建的用户中,都要看了 NormalizedEmail 假使 将email 的值变成大写了,我都要你将会不为什明白了

的确,另一个 多会提高数据库的查询速率单位单位,从Identity的代码中都要看了,关于Email的查询都转打上去了对 NormalizedEmail的查询。空口无凭,当你们看一小段简短的代码

博客园不支持横向滚动代码,太久太久我把代码都竖过来了,看着不为什别扭 将会我就到这里看具体的数据

指示当前用户是是是不是开启了双因子验证

Identity 提供了电子邮件验证功能,假使 通常见到的那种,邮件中会好几个 多加密的链接,用于验证邮件,怎么才能 才能 生成链接Identity将会做好了,甚至写了邮件发送的接口——IEmailSender和一个 多空的实现EmailSender

NormalizedEmail在使用时我就不用关心,我要是要去手动更改它的值,将会当用户创建将会用户资料更新的事先 NormalizedEmail一定会被自动更新