我正在使用Aspnet Boilerplate管理多租户系统。我目前正在尝试打开2因素身份验证,该身份验证已复制到样板中。我已经登录到主机并打开2FA(因为我知道除非在主机中先将其打开,否则不能在Tenanats中打开)。完成此操作后,我现在可以看到在每个租户中打开2FA的设置(已完成)。我的问题是,尽管确实向主机用户请求了所期望的代码,但从来没有租户用户。我将其范围缩小到以下问题。成功登录后,这称为:
var signInResult = await _signInManager.SignInOrTwoFactorAsync(loginResult, loginModel.RememberMe);
这总是返回RequiresTwoFactor == false
。这样做的原因是,在此调用中,调用了:
GetValidTwoFactorProvidersAsync(TUser user)
依次调用.NET Core中的同名函数。此调用返回一个空列表,这意味着我没有注册TwoFactor Provider。这很奇怪,因为以主机身份登录时我得到了提供程序,但作为租户却返回了空。有什么我想念为什么会发生的事情。另外,首先在那些样板代码中的那些地方(电子邮件和SMS)首先注册了?
答案 0 :(得分:1)
在AbpZeroSettingProvider.cs上查看2FA的配置
但是Aspnet Boilerplate中不包括两因素身份验证的实现。
这是 AspNetZero 中的一项功能,请参见https://aspnetzero.com/Documents/Development-Guide-Core#two-factor-login