C# 如何重置用户';EntityFramework Seed()方法中的密码?
我想在EntityFramework的种子方法中重置管理员密码。但是,由于没有OWIN上下文,我无法初始化ApplicationUserManager以生成令牌 这是我的代码: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&
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);