我正在探索这个身份框架,在实现Custome UserStore时,无论如何都要摆脱这些,即所谓的可选接口。 根据这个帖子,看起来不像一个选项。 When implementing your own IUserStore, are the "optional" interfaces on the class actually optional?
我在.Net Framework 4.5 MVC5上使用2.2.1版本
答案 0 :(得分:1)
所以我查看了Asp.Net.Identity汇编代码,这是我的理解。很可能,这对您来说很明显,但仍然分享:
要在 UserManager 上调用 CreateAsync ,默认情况下,我必须实现这些商店界面: IUserStore,IUserPasswordStore,IUserSecurityStampStore,IUserEmailStore,IUserLockoutStore 。在UserManager中,大多数对这些方法的调用都是模板化的。
好消息,大多数 UserStore 对这些接口方法的调用在调用之前都有一个条件,我们可以在 UserManager 中设置。
例如:在UserManager中设置“RequireUniqueEmail = false”,并且在调用CreateAsync时不会调用IUserEmailStore.GetEmailAsync,您也不必在UserStore上实现它。
我为 CreateAsync 创建了地图,我觉得应该会有所帮助。
所以,回答原始问题,如果我们知道我们要做什么 验证(条件),我们只能在UserStore上实现那些接口。