1

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

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

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

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

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

提前致谢。

4

1 回答 1

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;
     }   
}
于 2016-04-18T10:23:46.090 回答