UserManager.FindAsync 使用自定义 Userstore 的 FindByIdAsync 方法,而不是 FindByNameAsync



我使用的是Identity Framework。当我登录到我的应用程序时,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;
     }   
}

相关内容

  • 没有找到相关文章

最新更新