实现IUserPasswordStore的userstore中的SetPasswordHashAsync不可用

时间:2015-04-24 06:21:44

标签: asp.net-mvc

我已经实现了自定义用户界面和用户管理器,并成功避免使用实体框架。

public class CustomUserManager : UserManager<ApplicationUser> { }

public class CustomUserStore<T> : IUserStore<T>, IUserPasswordStore<T>, IQueryableUserStore<T>, IUserRoleStore<T>, IUserEmailStore<T>,   IUserLockoutStore<T, string>, IUserTwoFactorStore<T, string>, UserPhoneNumberStore<T>, IUserLoginStore<T> where T : ApplicationUser { }

自定义用户界面包含许多方法,包括:

Task<string> IUserPasswordStore<T, string>.GetPasswordHashAsync(T user) {
  return Task<string>.Factory.StartNew(() => {
    return ((T)repository.GetUserByUserName(user.UserName)).PasswordHash; 
  });
}

Task IUserPasswordStore<T, string>.SetPasswordHashAsync(T user, string passwordHash) {
  if (user == null) throw new ArgumentNullException("user");
  user.PasswordHash = passwordHash;
  return Task.FromResult(0);
}

一切都与我的身份实施完美配合,包括电子邮件确认和使用生成的用户令牌进行密码恢复。当我尝试从注入了usermanager的控制器调用上面的这两种方法时,我收到一个错误:

错误1&#39; mynamespace.CustomUserManager&#39;不包含&#39; SetPasswordHashAsync&#39;的定义没有扩展方法&#39; SetPasswordHashAsync&#39;接受类型&#39; mynamespace.CustomUserManager&#39;的第一个参数。可以找到

问题在于用户领域确实有这两种方法的定义。如果我将它们评论出来,那么自定义用户界面将无法构建。为什么控制器看不到它们的定义?

await customUserManager.SetPasswordHashAsync(user, hashedNewPassword); // build error

在应用程序中,我不需要将这些功能称为正常活动。问题是我从AspnetMembership迁移到AspNet.Identity并尝试自动进行密码迁移,而不是要求用户重置密码。如果我能让它发挥作用,那将是一次性的工作。

0 个答案:

没有答案