Asp Net Core Identity UserManager更改上下文

时间:2017-05-29 06:54:17

标签: asp.net-core asp.net-identity

我已经实现了微软身份框架,我通过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 &#x27;Default&#x27; is registered.</div>
    <p class="location">Microsoft.AspNetCore.Identity.UserManager&#x2B;&lt;VerifyUserTokenAsync&gt;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();

简而言之,根据请求到达的地址,用户管理员必须更新到其上下文

1 个答案:

答案 0 :(得分:0)

本文在调用AddDefaultTokenProviders()两次时引用了一个错误。这可能是你的问题,我正在寻找一个类似的解决方案,但这个对我不起作用,但也许你还没有看到它,它适用于你。

https://github.com/aspnet/Identity/issues/972