当前位置: 首页 > 编程语言 > C#

在实现我自己的IUserStore时,类上的“可选”接口实际上是可选的吗?分享

时间:2023-04-11 01:31:12 C#

自己实现IUserStore时,类上的“可选”接口真的是可选的吗?我使用的是Microsoft的Asp.NetIdentity框架版本2,并且正在实现我自己的IUserStore。我的新类MyUserStore实现了IUserStore接口和IUserPasswordStore,这是将它与UserManager类一起使用所必需的。或者至少这是我从阅读这样的教程中收集到的信息:“身份系统中需要的一个接口是IUserStore”——ScottAllen但是,当我运行代码时,情况似乎并非如此。我初始化我的经理:varuMan=newUserManager(newMyUserStore());varsMan=newSignInManager(uMan,authCtxFromOwin);在SignInManager上执行sMan.PasswordSignIn(...)时,无论如何SignInManager始终在UserManager中运行依赖于可选接口的函数。下面是SignInManager类中PasswordSignInAsync方法的来源:){返回SignInStatus.LockedOut;}if(awaitUserManager.CheckPasswordAsync(user,password).WithCurrentCulture()){returnawaitSignInOrTwoFactor(user,isPersistent).WithCurrentCulture();}...返回SignInStatus.Failure;它总是在检查密码之前尝试调用UserManager.IsLockedOutAsync(),因此如果商店没有实现IUserLockoutStore接口,则无论何时都会抛出异常。这是否意味着要使用UserManager和SignInManager类的默认功能,您需要实现每个I*Store接口?看起来修复是从SignInManager继承并覆盖PasswordSignInAsync方法。这是标准做法吗?谢谢!我发现身份框架与所需的I*Store的“可选性”不一致。在一些公共方法中,它检查是否提供了所需的商店,在其他一些地方它只是调用该方法。我还没有弄清楚哪些是绝对需要的,哪些是不能调用的。所以我会使用异常来跟踪和实现应用程序需要的任何存储。以上是C#学习教程:实现自己的IUserStore时,类上的“可选”接口真的是可选的吗?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: