Как предоставить пользовательскую реализацию метода UpdateAsync идентификатора asp.net?

Я выполняю пользовательский идентификатор asp.net и не использую встроенные таблицы asp.net. Я успешно создал пользователя с внедрением пользовательского CreateAsync

Теперь я хочу обновить пользователя новым зашифрованным паролем, и поэтому я не понимаю, как обеспечить пользовательскую реализацию UpdateAsync method .

Это моя таблица:

Пользователь : Id,Name,EmailId,Password,Statistics,Salary

Модель :

 public class UserModel : IUser { public string Id { get; set; } public string Name { get; set; } public string EmailId { get; set; } public string Password { get; set; } public int Salary { get; set; } } 

Мой пользовательский class, который реализует IUserstore:

 public class UserStore : IUserStore, IUserPasswordStore { private readonly MyEntities _dbContext; private readonly HttpContext _httpContext; // How to implement this method for updating only user password public Task UpdateAsync(UserModel user) { throw new NotImplementedException(); } public Task CreateAsync(UserModel user) { return Task.Factory.StartNew(() => { HttpContext.Current = _httpContext ?? HttpContext.Current; var user = _dbContext.User.Create(); user.Name = user.Name; user.EmailId = user.EmailId; user.EmailAddress = user.Email; user.Password = user.Password; _dbContext.Users.Add(dbUser); _dbContext.SaveChanges(); }); } public Task SetPasswordHashAsync(UserModel user, string passwordHash) { return Task.Factory.StartNew(() => { HttpContext.Current = _httpContext ?? HttpContext.Current; var userObj = GetUserObj(user); if (userObj != null) { userObj.Password = passwordHash; _dbContext.SaveChanges(); } else user.Password = passwordHash; }); } public Task GetPasswordHashAsync(UserModel user) { //other code } } 

controller:

 public class MyController : ParentController { public MyController() : this(new UserManager(new UserStore(new MyEntities()))) { } public UserManager UserManager { get; private set; } [HttpPost] public async Task SaveUser(UserModel userModel) { IdentityResult result = null; if (userModel.Id > 0) //want to update user with new encrypted password result = await UserManager.UpdateAsync(user); else result = await UserManager.CreateAsync(userModel.EmailId, userModel.Password); } } 

Не уверен, что это то, что вы ищете …

  public Task UpdateAsync(UserModel model) { return Task.Factory.StartNew(() => { var user = _dbContext.User.Find(x => x.id == model.id); user.Password = model.Password; _dbContext.SaveChanges(); }); } 

Он получит конкретную запись и обновит пароль, а затем сохранит запись.

редактировать

Поскольку пароль не получает зашифрованный, я добавил код, чтобы взять эту строку и оставить модель такой, какой она есть, этот метод расширения зашифрует значение пароля, я не тестировал это, но я уверен, что он будет работать.

  user.Password = model.Password.EncryptPassword(EncryptKey); 

Методы расширения для шифрования пароля

Когда-то назад я создал полную оболочку поверх .NET Identity и код можно найти здесь . Это может быть полезно для вас. Здесь вы также можете найти nuget. Я также объяснил библиотеку в блоге здесь .

  • Сохранение и извлечение изображения (двоичного) из SQL Server с использованием Entity Framework 6
  • Могу ли я использовать константу в векторах, чтобы добавлять элементы, но не изменять уже добавленные?
  • C # Игнорировать ошибки сертификата?
  • Печать правильного количества десятичных точек с помощью cout
  • ASP.NET MVC 4 C # HttpPostedFileBase, как хранить файл
  • Выберите выделение, используя linq
  • g ++ не показывает «неиспользуемое» предупреждение
  • Преобразование базового classа в производный class
  • Как нарисовать линию обновления
  • Как передать функцию в качестве параметра в C?
  • C ++ эквивалент java.toString?
  • Interesting Posts

    Как установить модуль node.js без использования npm?

    Как установить Windows 8 с USB-накопителя?

    Высокое разрешение на маленьком экране

    Неавторизованное устройство Bluetooth поддерживает подключение к Mac

    String.Equals () не работает по назначению

    Заполните в Excel, но на основе нескольких значений

    Как создать резервную копию библиотеки iPhoto на внешний жесткий диск без использования Time Machine

    Как сделать снимок экрана с помощью элемента управления WPF?

    Качество отображения текста в Visio 2010

    Как настроить панель инструментов gvim?

    Clonezilla диск для клонирования диска на двойной загрузке ubuntu karmic & XP setup – невозможно открыть '/boot/grub/device.map'

    Как играть в MP3-файлы на вход микрофона

    Android: GLES20: вызывается нереализованным API OpenGL ES

    В Windows есть визуальный индикатор для приложений, которые «работают как разные пользователи»?

    Как вы не можете RichTextBox обновить его отображение?

    Давайте будем гением компьютера.