目录
登录管理器类ApplicationSignInManager
用户管理器--注册、忘记密码、重置密码、用户的增删改查..会用到
ApplicationUserManager 中Create方法注册的流程
Identity提供了实现各种登录注册等身份认证的功能
登录管理器
登录管理器SignInManager
AccountController.cs
登录管理器SignInManager,我们看看这个管理器是怎么来的。
AccountController.cs
其中HttpContext.GetOwinContext().Get<>()中,通过GetOwinContext上下文Get方法获取到登录管理器ApplicationSignInManager,获取到以后,通过set方法把值存在_signInManager里面了
登录管理器类ApplicationSignInManager
F12 ApplicationSignInManager ,进入ApplicationSignInManager管理器类
identityConfig.cs
在ApplicationSignInManager 类的构造方法中,可以看到是传递了用户管理器ApplicationUserManager 和授权管理器IAuthenticationManager。
ApplicationSignInManager 的构造方法,继承了ApplicationSignInManager 父类SignInManager的构造方法
SignInManager<TUser, TKey>类
上图可以看到,ApplicationSignInManager 是继承了 SignInManager<TUser, TKey> 的。
我们看看SignInManager<TUser, TKey>类
SignInManager[从元数据]
声明ClaimsIdentity
上图中的CreateUserIdentity 前面有一个声明ClaimsIdentity
声明的作用:
如下,假如说我们不想显示班级管理,我们可以通过声明的方式,不显示声明管理。(听老师的意思应该类似与权限管理之类的)
方法PasswordSignInAsync
登录管理器中,var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
其中PasswordSignInAsync正是SignManager类的方法,他是通过邮箱、密码进行登录
用户管理器--注册、忘记密码、重置密码、用户的增删改查..会用到
用户管理器UserManager
AccountController.cs
UserManager是怎么来的呢,还是这个文件,f12
用户管理器类 ApplicationUserManager
identityConfig.cs
ApplicationUserManager 中Create方法注册的流程
identityConfig.cs
ApplicationUserManager->UserStore->IOwinContext->ApplicationDbContecxt
调用Create方法配置用户管理器和登录管理器
通过Owin上下文来配置用户管理器和登录管理器
那么这里实际上就是上一节讲的内容,ApplicationUserManager和ApplicationSignInManager实际上就是上面identityConfig.cs 里的ApplicationUserManager登录管理器类和ApplicationSignInManager用户管理器类。
获取用户管理和登录管理器
这个时候回头看本章第一节AccountController.cs,就会发现,在这里当我们需要用到这两个管理器的时候,会通过Owin上下文来获取。
UserManager用户管理器属性
SignInManager登录管理器属性
补充知识点:查看源码
- 通过工具-ILSpy查看源码
- 工具-选项-文本编辑器-c#-高级-支持导航到反编译源