UserManager.FindAsync для использования метода FindByIdAsync пользовательского хранилища вместо FindByNameAsync

Я использую Identity Framework. Когда я вхожу в свое приложение, appUser получает UserManager следующим образом:

Patient patient = await UserManager.FindAsync(model.Id, model.Password);

Как я понимаю из отладки, UserManager.FindAsync использует FindByNameAsync(string userName) из UserStore (у меня есть пользовательский UserStore).

Вопрос в том, как сказать UserManager.FindAsync использовать метод FindByIdAsync моего пользовательского хранилища UserStore вместо FindByNameAsync?

Нужно ли мне также написать собственный UserManager?

Заранее спасибо.

1 ответ

Решение

Вы можете переопределить метод в пользовательском UserManager

public class ApplicationUserManager : UserManager<AppUser, string>
{
     public override async Task<AppUser> FindAsync(string id, string password)
     {
         var user = await FindByIdAsync(id).WithCurrentCulture();
         if (user == null)
         {
             return null;
         }
         return await CheckPasswordAsync(user, password).WithCurrentCulture() ? user : null;
     }   
}
Другие вопросы по тегам