我已经实现了微软身份框架,我通过dependecy注入使用UserManager,因为它是一个多租户项目,我需要扩展UserManager类来传递所需的上下文,我搜索谷歌但我可以找不到或更好地适应我的情况。
_userManagerRepository = new UserManagerRepository(new PortaleContext(tenantContext.Tenant))
_userMgr = new UserManager<ApplicationUser>(userStore,null,null,null,null,null,null,null,null);
但是当我运行这个方法时:
var passwordResetToken = await _userMgr.GeneratePasswordResetTokenAsync(user)
我收到以下错误:
<div class="titleerror">NotSupportedException: No IUserTokenProvider named 'Default' is registered.</div>
<p class="location">Microsoft.AspNetCore.Identity.UserManager+<VerifyUserTokenAsync>d__122.MoveNext()</p>
这是我的创业课程的一部分:
services.AddIdentity<ApplicationUser, IdentityRole>(config =>
{
config.User.RequireUniqueEmail = true;
config.Password.RequiredLength = 8;
// config.Cookies.ApplicationCookie.LoginPath = "/App/Login";
config.SignIn.RequireConfirmedEmail = false;
config.SignIn.RequireConfirmedPhoneNumber = false;
})
.AddEntityFrameworkStores<AdminContext>()
.AddDefaultTokenProviders();
services.AddIdentity<ApplicationUser, IdentityRole>(config =>
{
config.User.RequireUniqueEmail = true;
config.Password.RequiredLength = 8;
config.Password.RequireNonAlphanumeric = false;
config.Password.RequireUppercase = false;
// config.Cookies.ApplicationCookie.LoginPath = "/App/Login";
config.SignIn.RequireConfirmedEmail = false;
config.SignIn.RequireConfirmedPhoneNumber = false;
})
.AddEntityFrameworkStores<PortaleContext>()
.AddDefaultTokenProviders();
简而言之,根据请求到达的地址,用户管理员必须更新到其上下文
答案 0 :(得分:0)
本文在调用AddDefaultTokenProviders()两次时引用了一个错误。这可能是你的问题,我正在寻找一个类似的解决方案,但这个对我不起作用,但也许你还没有看到它,它适用于你。