详解ASP.NET中Identity的身份验证代码

2019-12-30 18:27:28于海丽
ASP.NET,Identity,身份验证

两个中间件前者用于处理二次验证,后者用于记住登录状态,下次访问系统时自动登录。

4. 添加验证码发送方式选择以及验证码填写页面及相应的Action方法(代码略)。

5. 在数据库中将演示用的用户信息改为启用二次验证(注:模板代码中有用于管理个人信息的功能,此处省略了实现,直接通过修改数据数据的方式开启用户的双因子验证、添加电话号码等):

ASP.NET,Identity,身份验证

6. 运行结果:

登录后需要选择验证码发送方式:

ASP.NET,Identity,身份验证

选择后点击提交按钮,页面调整到验证页面的同时,指定的文件中生成了需要的验证码:

  ASP.NET,Identity,身份验证

  ASP.NET,Identity,身份验证

填写验证码后点击提交按钮,则登录成功:

ASP.NET,Identity,身份验证

  ASP.NET,Identity,身份验证

注:双因子验证也可以应用到第三方账户的登录方式上,双因子验证只与用户有关与身份验证方式无关。

验证码机制

对于双因子验证来说,它实际上就是在普通验证或第三方账户验证的基础上增加了验证码的发送和验证两个环节,那么对于验证码这个主体Identity是如何来维护的呢?

在上面的介绍中,有一个环节就是需要通过对UserManager进行配置以支持双因子验证的消息发送、消息生成等等:

  ASP.NET,Identity,身份验证

根据这个代码看来XXXTokenProvider是专门用来维护验证码的,而XXXService是用来发送的,所以这里将对TokenProvider进行说明,了解验证码是如何维护的:

ASP.NET,Identity,身份验证

上图是TokenProvider相关的一个简单类图,从类图中可以看出TokenProvider实际上是实现了一个名为IUserTokenProvider的接口,该接口中有4个方法,它们的作用分别是: