UserManager.FindAsync 使用自定义用户存储的 FindByIdAsync 方法而不是 FindByNameAsync

UserManager.FindAsync to use custom Userstore's FindByIdAsync method instead of FindByNameAsync

我正在使用身份框架。 当我登录到我的应用程序时,appUser 按如下方式检索 UserManager:

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

我从调试中了解到,UserManager.FindAsync 使用 UserStore 中的 FindByNameAsync(string userName)(我有一个自定义 UserStore)。

问题是:如何告诉 UserManager.FindAsync 使用自定义 UserStore 的 FindByIdAsync 方法而不是 FindByNameAsync?

我还需要编写自定义 UserManager 吗?

提前致谢。

您可以覆盖自定义 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;
     }   
}