如何解决来自不同Web应用程序问题的.NET Core 3 UserManager / IdentityUser
我在.Net Core 3.1中构建了两个带有剃须刀页面的Web应用程序。 第一个具有用于认证的标准网络核心身份,该身份在Startup.cs中使用
初始化 services.AddDefaultIdentity<IdentityUser>(options =>
{
options.User.RequireUniqueEmail = true;
options.SignIn.RequireConfirmedAccount = true;
options.SignIn.RequireConfirmedEmail = true;
})
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<context>();
第二个使用以下代码使用AAD身份验证
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd",options));
两个应用共享相同的数据库
services.AddDbContext<context>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
第二个站点(AAD一个)用于管理目的,我需要从第二个应用程序中的第一个应用程序处理用户(例如更改密码,解锁用户..)。
我尝试使用以下方式初始化“ UserManager”:
UserManager<IdentityUser> userManager =
new UserManager<IdentityUser>(
new UserStore<IdentityUser>(context);,identityOptions,//same of startup.cs from first site
new PasswordHasher<IdentityUser>(),new List<UserValidator<IdentityUser>>() { new UserValidator<IdentityUser>() },new List<PasswordValidator<IdentityUser>>() { new PasswordValidator<IdentityUser>() },new UpperInvariantLookupNormalizer(),new IdentityErrorDescriber(),null,null);
使用此代码,我可以吸引用户
var user = await userManager.FindByIdAsync(SOMEID);
但是,如果尝试更改密码,ResetPasswordAsync或GeneratePasswordResetTokenAsync之类的操作,我总是会遇到类似以下错误:
An unhandled exception occurred while processing the request.
NotSupportedException: No IUserTwoFactorTokenProvider<TUser> named 'Default' is registered.
我不明白的是,如果我缺少某些东西或者我的方法是完全错误的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。