Entity Framework не загружает данные из пользовательской таблицы в ASP.NET IDENTITY - PullRequest
0 голосов
/ 10 сентября 2018

Я работаю с ASP.NET Identity и EF 6.2. Мой проект состоит в том, чтобы настроить управление пользователями, сохраняя изменение пароля пользователя. Мой код ссылки по этой ссылке: https://blogs.msdn.microsoft.com/webdev/2014/01/06/implementing-custom-password-policy-using-asp-net-identity

Поэтому я добавил новую таблицу AspNetCustomUserPreviousPasswords для хранения пароля для смены пользователя:

public class AspNetCustomUserPreviousPasswords { public AspNetCustomUserPreviousPasswords() { CreatedDate = DateTime.Now; }<br> DatabaseGenerated(DatabaseGeneratedOption.Identity), Key, Column(Order = 0) public int Id { get; set; } [Column(Order = 1)]<br> [MaxLength(128)] [Required] public string HashPassword { get; set; }<br> [Column(Order = 2)] [Required] public DateTime CreatedDate { get; set; }<br> [Key, Column(Order = 3)] public string UserId { get; set; } public virtual ApplicationUser User { get; set; } }

затем я обновил свой код в ApplicationUser.cs для использования контекста Identity DB и управления паролем запроса пользователя:
public class ApplicationUser : IdentityUser { public ApplicationUser() : base() { UserPreviousPasswords = new List<code><AspNetCustomUserPreviousPasswords>(); }
общедоступный виртуальный IList UserPreviousPasswords {get; задавать; }
публичная асинхронная задача GenerateUserIdentityAsync (менеджер UserManager, строка authenticationType) { var userIdentity = await manager.CreateIdentityAsync (this, authenticationType); // Добавить пользовательские заявки здесь вернуть userIdentity; } }
public override async Task ChangePasswordAsync (строка userId, строка currentPassword, строка newPassword) { if (ожидайте IsPreviousPassword (userId, newPassword)) { return await Task.FromResult (IdentityResult.Failed («Невозможно повторно использовать старый пароль»)); } var result = await base.ChangePasswordAsync (userId, currentPassword, newPassword); если (результат. Успешно) { var store = Сохранить как ApplicationUserStore;
ожидание store.AddToPreviousPasswordsAsync (ожидание FindByIdAsync (userId), PasswordHasher.HashPassword (newPassword)); } вернуть результат; }
приватная асинхронная задача IsPreviousPassword (строка userId, строка newPassword) { var user = await FindByIdAsync (userId); if (user.UserPreviousPasswords.OrderByDescending (x => x.CreatedDate). Выберите (x => x.HashPassword) .Take (PASSWORD_HISTORY_LIMIT) .Where (x => PasswordHasher.VerifyHashedPassword (x, newPassword)! = PasswordVerificationResult.Failed). Любой()) { вернуть истину; } вернуть ложь; }

Итак, в задании IsPreviousPassword var user = await FindByIdAsync(userId);
Пользователь var не загружает пароль из свойства UserPreviousPasswords:
введите описание изображения здесь

Что я не так? Мне нужно загрузить пароль истории в UserPreviousPasswords, когда найти пользователя.

...