C# 如何重置用户';EntityFramework Seed()方法中的密码?

C# 如何重置用户';EntityFramework Seed()方法中的密码?,c#,asp.net,entity-framework,asp.net-mvc-5,asp.net-identity-2,C#,Asp.net,Entity Framework,Asp.net Mvc 5,Asp.net Identity 2,我想在EntityFramework的种子方法中重置管理员密码。但是,由于没有OWIN上下文,我无法初始化ApplicationUserManager以生成令牌 这是我的代码: protected override void Seed(ModelUNRegister.Models.ApplicationDbContext context) var userManager = new ApplicationUserManager(new UserStore<ApplicationUser&

我想在EntityFramework的种子方法中重置管理员密码。但是,由于没有OWIN上下文,我无法初始化ApplicationUserManager以生成令牌

这是我的代码:

protected override void Seed(ModelUNRegister.Models.ApplicationDbContext context)

var userManager = new ApplicationUserManager(new UserStore<ApplicationUser>(context));
// How should I Initalize userManager.UserTokenProvider?

if (userManager.FindByName(AppSettings.InitalAdminAccount) == null)
{
    // Create user
}
else
{
    var adminUser = userManager.FindByName(AppSettings.InitalAdminAccount);
    // The following code throws error: IUserTokenProvider is not registered.
    string resetToken = userManager.GeneratePasswordResetToken(adminUser.Id);
    var result = userManager.ResetPassword(adminUser.Id, resetToken, AppSettings.InitalAdminPassword);

    if (!result.Succeeded) throw new InvalidOperationException(string.Concat(result.Errors));
}
受保护的覆盖无效种子(modelnunregister.Models.ApplicationDbContext上下文)
var userManager=newapplicationUserManager(newuserstore(context));
//我应该如何初始化userManager.UserTokenProvider?
if(userManager.FindByName(AppSettings.InitalAdminAccount)==null)
{
//创建用户
}
其他的
{
var adminUser=userManager.FindByName(AppSettings.InitalAdminAccount);
//以下代码引发错误:IUserTokenProvider未注册。
string resetToken=userManager.GeneratePasswordResetToken(adminUser.Id);
var result=userManager.ResetPassword(adminUser.Id、resetToken、AppSettings.InitalAdminPassword);
如果(!result.succeed)抛出新的InvalidOperationException(string.Concat(result.Errors));
}

我想知道是否有其他方法可以生成令牌来更改密码。

您不需要在上下文中,在您的代码中实例化了一个
UserManager
。如果您想获得有关
IUserTokenProvider
但是您可以在不生成令牌的情况下更新密码。将方法添加到
UserManager

public Task<IdentityResult> ChangePassword(ApplicationUser user, string newPassword)
{
     var store = Store as IUserPasswordStore<ApplicationUser, string>;
     return UpdatePassword(store, user, newPassword);
}
userManager.ChangePassword(adminUser, AppSettings.InitalAdminPassword);