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;
}
}